gpt4 book ai didi

c - Shell/C 信号量

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:57 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com