我有一个 C 程序和一个需要独占访问文件的 bash 脚本。我看过 you can use mkdir with bash ,但这与 C 混合得好吗?只测试目录的存在、创建然后删除它是否安全?
我实际上在做什么:一个 C 程序不断地用新数据重写一个文件,然后从 bash 脚本中读取这些数据。
最佳答案
信号量的全部要点是原子性,如果您使用自己的代码检查目录是否存在,您将失去该属性。你应该做什么它使用 mkdir
函数并在它返回时检查 EEXIST
错误代码:
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 - Shell/C 信号量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40015518/