我正在使用低级文件I / O(基本上必须使用fcntl)编写用于大学的C Linux程序。 我需要锁定文件末尾的8个字节,以追加一些新数据。尝试以下操作将返回无效参数错误。
struct flock field_lock;
field_lock.l_type = F_WRLCK;
field_lock.l_whence = SEEK_CUR;
field_lock.l_start = 0;
field_lock.l_len = 2 * sizeof(int);
// ...
lseek(stocks_fd, 0, SEEK_END);
// ...
fcntl(stocks_fd, F_SETLKW, &field_lock);
您知道我还能如何实现这一目标,或者我做错了什么?
编辑1:https://gist.github.com/limelier/5a7ba8ab166a1f586a3c4feec355b83b 整个程序,对EOF锁和写入逻辑进行了改进,如以下注释中所建议。但是,仍然存在相同的问题,并且已附加示例输出。