Shell/C 信号量
Shell/C semaphore
我有一个 C 程序和一个 bash 脚本需要独占访问一个文件。我已经看到 you can use mkdir with bash,但这与 C 混合得好吗?只测试目录的存在、创建然后删除它是否安全?
我实际上在做什么:一个 C 程序不断地用新数据重写一个文件,然后从 bash 脚本中读取这些数据。
信号量的全部意义在于原子性,如果您使用自己的代码检查目录是否存在,您将失去 属性。你应该做什么它使用 mkdir
函数并检查 EEXIST
错误代码一旦它 returns:
char * lockdir="/tmp/myscript.lock";
int retval=mkdir(lockdir, S_IRWXU);
if(retval == 0) printf("successfully acquired lock: %s", lockdir);
else if(errno == EEXIST) printf("cannot acquire lock %s", lockdir);
else printf("Something bad happened (permissions/no free space/read-only filesystem)")
我有一个 C 程序和一个 bash 脚本需要独占访问一个文件。我已经看到 you can use mkdir with bash,但这与 C 混合得好吗?只测试目录的存在、创建然后删除它是否安全?
我实际上在做什么:一个 C 程序不断地用新数据重写一个文件,然后从 bash 脚本中读取这些数据。
信号量的全部意义在于原子性,如果您使用自己的代码检查目录是否存在,您将失去 属性。你应该做什么它使用 mkdir
函数并检查 EEXIST
错误代码一旦它 returns:
char * lockdir="/tmp/myscript.lock";
int retval=mkdir(lockdir, S_IRWXU);
if(retval == 0) printf("successfully acquired lock: %s", lockdir);
else if(errno == EEXIST) printf("cannot acquire lock %s", lockdir);
else printf("Something bad happened (permissions/no free space/read-only filesystem)")