我希望能够从txt文件中读取并追加下一个数字,同时使用fork作为第二个进程。在以下代码中,我需要帮助解锁文件。我无法解锁该文件。
int main() {
int x;
pid_t child = fork();
FILE *file;
//flock(fileno(file),LOCK_EX);
file = fopen ("list.txt", "r");
//printf("file is locked");
int fdSource = (int)file;
if (fdSource > 0){
if (lockf(fdSource, F_LOCK, 0) == -1)
x = readValue(file);
return 0; /* FAILURE */
}
else {
return 1;
}
if (lockf(fdSource, F_ULOCK, 0) == -1){
printf("file is not lock");
appendValue(x);
}
else {
return 1;
}
appendValue(x);
}
int fdSource = (int)file;
这行代码是错误的。请查看fileno(3)
函数的 man 手册。 - MatFILE*
获取文件描述符。 - Matlockf
是你的操作系统的一部分,而不是你的编程语言。 - Jens Gustedtlockf()
;你最初标题说的是flock()
。你可以使用其中任何一个,或者使用fcntl()
—— 这是如此多的选择 —— 来进行锁定,但你应该保持一致性。 - Jonathan Lefflerfileno(fp)
获取文件流的文件描述符。文件描述符通常用fd
表示,文件流通常用fp
表示。 - Jonathan Leffler