c - Shell/C 信号量

标签 c bash unix semaphore

我有一个 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/

相关文章:

unix - 如何检查列是否包含非数值

node.js - 在node.js中唯一标识一个进程

c - MSYS2 未定义对 _imp__XXXXXXXX 的引用

c - 如何在 ext4 中查找文件名?

c - C 中各个 UDP 套接字的超时

bash - 是否可以避免执行某个命令?

c - netbeans 6.1 - 无法获取将鼠标悬停在其上的变量类型

linux - 列出文件并将其复制到 unix 中

linux - bash shell脚本中初始化动态变量(可变变量)

C/Unix : How to extract the bits from st_mode?