所以我的代码出了问题,这让我疯狂,因为我似乎无法弄清楚是什么导致了这个问题。基本上,我正在尝试使用fork()使用多个子进程写入已打开的文件。在我开始分叉之前,我可以写它很好,但是一旦我fork,然后做一个if语句来查看它是否是子进程,它就不会写。
基本上,我所拥有的是:
FILE *output = NULL;
output = fopen(...); // Done successfully
fprintf(output, "This writes okay\n");
// Fork n processes
for (i = 0; i <= n; n++)
{
pid[i] = fork();
fprintf(output, "We can still write\n");
if (pid[i] == 0) // Child process
{
fprintf(output, "This won't write to output\n");
printf("I can still write and calculate stuff otherwise\n");
...
}
}
任何人都可以弄清楚为什么在检查它是否是子进程后它无法写入?从我所看到的东西来看绝对没有错误。