我想从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);
}
答案 0 :(得分:3)
将int fdSource = (int)file;
替换为:
int fd = fileno(file);
此外,如果您使用的是UNIX,则需要flock
,而不是lockf
。要锁定,请执行以下操作:
flock(fd, LOCK_EX);
解锁:
flock(fd, LOCK_UN);