fig13.6

来自「unix环境编程」· 6 代码 · 共 39 行

6
39
字号
#include <unistd.h>#include <stdlib.h>#include <fcntl.h>#include <syslog.h>#include <string.h>#include <errno.h>#include <stdio.h>#include <sys/stat.h>#define LOCKFILE "/var/run/daemon.pid"#define LOCKMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)extern int lockfile(int);intalready_running(void){	int		fd;	char	buf[16];	fd = open(LOCKFILE, O_RDWR|O_CREAT, LOCKMODE);	if (fd < 0) {		syslog(LOG_ERR, "can't open %s: %s", LOCKFILE, strerror(errno));		exit(1);	}	if (lockfile(fd) < 0) {		if (errno == EACCES || errno == EAGAIN) {			close(fd);			return(1);		}		syslog(LOG_ERR, "can't lock %s: %s", LOCKFILE, strerror(errno));		exit(1);	}	ftruncate(fd, 0);	sprintf(buf, "%ld", (long)getpid());	write(fd, buf, strlen(buf)+1);	return(0);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?