[Linux] Linux c 编程问题请教,父进程如何保证在读取子进程写入的文件之前子进程已经写入完毕?

 pid = fork(); if (!pid) { execvp(args[0], args); // 这里会创建一个路径为 path 的文件,并且会写入一些数据。 } wait(&wstatus); fd = open(path, O_RDONLY); // 读取子进程创建的文件 while ((n = read(fd, buf, BUFSIZ)) > 0) if (write(connfd, buf, n) != n) printf("write error\n"); 

这段代码先 fork 一个子进程,子进程创建并写入一些数据到一个文件。

父进程通过 wait 等待子进程执行完毕,然后 open 并开始读取子进程写入的文件。

这段代码有一个问题,就是有时子进程明明写入了一些数据到文件,但父进程却读取不到任何数据,就像子进程只是创建了一个空文件一样,如果在 wait 后加一个 sleep(1)就没有这种情况,请问如何保证子进程写入文件完毕后父进程才开始读取?

发表回复

您的电子邮箱地址不会被公开。