栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在C或C ++中创建单个实例应用程序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在C或C ++中创建单个实例应用程序

一个好的方法是:

#include <sys/file.h>#include <errno.h>int pid_file = open("/var/run/whatever.pid", O_CREAT | O_RDWR, 0666);int rc = flock(pid_file, LOCK_EX | LOCK_NB);if(rc) {    if(EWOULDBLOCK == errno)        ; // another instance is running}else {    // this is the first instance}

请注意,锁定使您可以忽略陈旧的pid文件(即,您不必删除它们)。当应用程序由于任何原因终止时,操作系统会为您释放文件锁。

Pid文件并不是非常有用,因为它们可能是过时的(该文件存在但该过程没有)。因此,可以锁定应用程序可执行文件本身,而不是创建和锁定pid文件。

一种更高级的方法是使用预定义的套接字名称创建和绑定Unix域套接字。对于应用程序的第一个实例,绑定成功。同样,当应用程序由于任何原因终止时,操作系统将取消绑定套接字。当

bind()
失败时,应用程序的另一个实例可以
connect()
并使用此套接字将其命令行参数传递给第一个实例。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405539.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号