在Linux下防止某个程序被运行两次的方法

来源:本站
导读:目前正在解读《在Linux下防止某个程序被运行两次的方法》的相关信息,《在Linux下防止某个程序被运行两次的方法》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《在Linux下防止某个程序被运行两次的方法》的详细说明。
简介:在Linux下防止某个程序被运行两次的方法

通过文件锁来实现,在程序运行的一开始,检查某文件是否存在,如果存在则说明改程序已经在运行了,如果不存在则利用open语句创建该文件,程序退出时关闭并删除此文件。

static char file_lock[sizeof(ctl_addr.sun_path)] = /var/run/file.pid;

static bool file_lock_created = FALSE;

static int

create_lock(void)

{

int fd = open(file_lock, O_WRONLY O_CREAT O_EXCL O_TRUNC,

S_IRUSR S_IRGRP S_IROTH);

if (fd < 0)

{

if (errno == EEXIST)

{

fprintf(stderr, "file: lock file "%s" already existsn", file_lock);

exit_file(10);

}

else

{

fprintf(stderr, "file: unable to create lock file "%s" (%d %s)n"

, file_lock, errno, strerror(errno));

exit_file(1);

}

}

file_lock_created = TRUE;

return fd;

}

static bool

fill_lock(int lockfd)

{

char buf[30]; /* holds "n" */

pid_t pid;

int len;

pid = getpid();

len = snprintf(buf, sizeof(buf), "%un", (unsigned int) pid);

bool ok = len > 0 && write(lockfd, buf, len) == len;

close(lockfd);

return ok;

}

static void

delete_lock(void)

{

if (file_lock_created)

{

//delete_ctl_socket();

unlink(file_lock); /* is noting failure useful? */

}

}

提醒:《在Linux下防止某个程序被运行两次的方法》最后刷新时间 2024-03-14 01:07:05,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《在Linux下防止某个程序被运行两次的方法》该内容的真实性请自行鉴别。