[英]how to use flock between C program and shell script
我有一个shell脚本和一个ac程序
#!/bin/bash
for i in `seq 1 10000`
do
(flock -x 200 // what is 200?
./taskA
) 200> lockfile
done
在C程序中,相关的代码段为:
int fd = open("lockfile", O_WRONLY|O_CREAT); // what permission should I put here?
for(i=0;i<10000;i++){
if(fd==-1)
printf("open file fails\n");
if(flock(fd, LOCK_EX)==0 ){ // lock the file
taskB(); // here is what I want to do
}
if (flock(fd, LOCK_UN)==0) // after finishing those tasks, unlock it
{
printf("C unlock\n");
}
}
我想在同一主机上运行Shell脚本和C程序,希望它们可以在不同的时间交替运行taskA
和taskB
,但是我不熟悉flock,因此存在一些权限问题或打开文件失败
例如,如果我运行C程序并使其完成然后再次运行,则显示“打开文件失败”,并且权限为
---xr-x--T 1 esolve 200036 0 May 6 02:18 lockfile
如何修改脚本和代码? 谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.