- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我写了一个简单的代码来测试 flock():
int main (int argc, char * const argv[]) {
int fd1;
if (fd1 = open( "file1", O_RDWR | O_CREAT | O_TRUNC) == -1)
{
perror("Cannot open file 1.\n");
fflush(stdout);
}
else
{
printf("file opened 1.\n");
fflush(stdout);
}
if(flock(fd1,LOCK_EX)==0)
{
printf("THE FILE WAS LOCKED 1.\n");
}
else if(errno == EACCES)
{
printf("The file is locked 1.\n");
}
std::cout<<"Enter any key:"<<std::endl;
std::cin >> input;
close(fd1);
std::cout<<"Lock was released."<<std::endl;
return 0;
}
当我运行可执行文件“Alex”两次时:
第一个过程:
$ ./Alex
file opened 1.
THE FILE WAS LOCKED 1.
Enter any key:
第二个过程:
$ ./Alex
file opened 1.
THE FILE WAS LOCKED 1.
Enter any key:
在事件监视器中,我看到两个具有两个不同 PID 的 Alex 实例。
似乎 flock() 不起作用。我错过了什么?谢谢!
最佳答案
尝试:
if ((fd1 = open( "file1", O_RDWR | O_CREAT | O_TRUNC)) == -1)
// ^ ^
因为你写的是一样的:
if (open( "file1", O_RDWR | O_CREAT | O_TRUNC) == -1)
fd1 = TRUE;
else
fd1 = FALSE;
因此,您正试图锁定 stdin
或 stdout
(取决于 open()
的结果)。
关于c - flock() 不会阻止其他进程获得独占锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26888728/
我想锁定 MySQL (InnoDB) 中的特定行,以便其他连接无法读取该特定行。 start transaction; Select apples from fruit where apples =
我想锁定 MySQL (InnoDB) 中的特定行,以便其他连接无法读取该特定行。 start transaction; Select apples from fruit where apples =
这个问题在这里已经有了答案: MySQL: comparison of integer value and string field with index (1 个回答) 关闭 5 年前。 我有一个
锁有两种分类方法。 (1) 从数据库系统的角度来看 锁分为以下三种类型: •独占锁(Exclusive Lock) 独占锁锁定的资源只允许进行锁定操作的程序使用,其它任何对它的操作均不
如下所示,我在 Linux (RHEL) 上运行 Python 2.6,但出于某种原因它没有 os.O_EXLOCK。有什么原因吗?有办法解决这个问题吗? Python 2.6.5 (r265:790
我是一名优秀的程序员,十分优秀!