繁体   English   中英

为什么我的fork()不输出任何内容?

[英]Why my fork() does not output anything?

作为代码,为什么我没有任何输出,有人可以告诉我这个问题吗? 像这样,我有两个fork() ,每个都将在子进程中运行,而我的父进程不会退出,这似乎是正确的,但是仍然没有任何输出。

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
    /***********************************/
    printf("--beginning of program\n");

    int counter = 0;
    pid_t pid1 = 0;
    pid_t pid2 = 0;
    while(1){  
        if(pid1 == 0)
            pid1 = fork1();
        if(pid2 == 0)
            pid2 = fork2();
    }

    printf("--end of program--\n");
    return 0;
}

/* Two fork() */
pid_t fork1(){
    pid_t pid = fork();
    if(pid ==0 )
    {
        while(1){
            sleep(1);
            fprintf(stdout," fork1 ");
        }
    }
    return pid;
}

pid_t fork2(){
    pid_t pid = fork();
    if(pid ==0 )
    {
        while(1){
            sleep(1);
            fprintf(stdout," fork1 ");
        }
    }
    return pid;
}

stdout是缓冲的,通常只会在换行符上刷新它,或者如果您显式刷新它。

通过在语句中添加换行符,可以使代码从子进程中输出行:

fprintf(stdout, "fork1\n");

或者通过在fprintf之后显式刷新缓冲区:

fflush(stdout);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM