我有一个C程序和一个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/

10-14 01:05