我正在寻找在两个程序之间锁定文件的正确方法。
我有一个程序(C)以相当快的速度(写入程序/高优先级)处理和写入结果到文件。我用Python编写了一个用户界面来绘制/监控这些数据(阅读器/低优先级)。我想避免在Python中打开文件,因为这会产生偏见的情节。
到目前为止,我只是在做f = fopen( filep, "w" );
和f = open( filep, "r" );
然后我通过一些例子来设置文件锁:
fd = open( fp, O_CREAT | O_WRONLY );
if( fd < 0 ){
printf("failed to get fd\n");
return -1;
}
_lock.l_type = F_WRLCK;
_lock.l_start = 0;
_lock.l_whence = SEEK_SET;
_lock.l_len = 0;
_lock.l_pid = 0;
if( fcntl( fd, F_SETLKW, &_lock ) < 0 ){
printf("fcntl failed to set lock\n");
return -1;
}
但这会修改文件权限。
咨询锁应该足够了,因为我可以使用fcntl控制两个程序中的所有内容。
有人可以提供建议来创建有效的锁并尊重两个程序之间的自然优先级吗?