当前位置: 技术问答>linux和unix
fork的疑惑
来源: 互联网 发布时间:2015-06-17
本文导语: 程序如下: #include #include int main(void) { pid_t pid; printf("startn"); if ((pid = fork()) 0的pid返回给父进程,将0返回给子进程. start输入两次是因为子进程是父进程的clone,当然会output start,并不是说fork会执...
程序如下:
#include
#include
int main(void)
{
pid_t pid;
printf("startn");
if ((pid = fork()) 0的pid返回给父进程,将0返回给子进程.
start输入两次是因为子进程是父进程的clone,当然会output start,并不是说fork会执行两次.
#include
#include
int main(void)
{
pid_t pid;
printf("startn");
if ((pid = fork()) 0的pid返回给父进程,将0返回给子进程.
start输入两次是因为子进程是父进程的clone,当然会output start,并不是说fork会执行两次.
|
printf是带缓冲的输出函数,如果缓冲没有清空,则fork的时候父进程也会把缓冲区copy给子进程,这样,在子进程printf的时候就会看到“start”的输出内容,防止这种情况的办法是在printf("startn");之后调用fflush(stdout);清空标准输出缓冲区,或者在setbuf(stdout,null);禁用缓冲池。
|
同意楼上
你可以./a.out>1.txt
看一下1.txt的内容就知道了~~`
你可以./a.out>1.txt
看一下1.txt的内容就知道了~~`