当前位置:  开发笔记 > 编程语言 > 正文

为什么这里的孩子处理不打印任何东西?

如何解决《为什么这里的孩子处理不打印任何东西?》经验,为你挑选了1个好方法。

假设之前已经声明了所有变量......因为它们已经存在.子进程不打印任何让我觉得它没有被执行的东西.父进程运行正常,尽管它没有获得共享内存.我为这段代码的长度道歉...

// create 5 child process
for(int k=0;k<5;k++){

    // fork a child process
    pid = fork();

    // error occured on fork
    if (pid < 0) {
        fprintf(stderr, "Fork Failed");
        return 1;
    }
    // this is what the child process will run
    else if (pid == 0) {
        //create a shared mem segment
        segment_id = shmget(IPC_PRIVATE, size, S_IRUSR | S_IWUSR);

        //attach the shared memory segment
        shared_memory = (char *) shmat(segment_id, NULL, 0);

        printf("this is child");

        double x = 0;
        double sum = 0;

        // Run process that sums the function
        for(int i=0; i

Doug.. 11

C stdout流在内部缓冲数据.可能是你的"这是孩子"的消息被缓冲了,缓冲区没有被execlp刷新,所以它就消失了.fflush(stdout);在printf之后尝试一下.顺便说一下,你也应该在这之前做到这一点fork(),这样孩子和父母都不会尝试在fork之前编写缓冲输出.



1> Doug..:

C stdout流在内部缓冲数据.可能是你的"这是孩子"的消息被缓冲了,缓冲区没有被execlp刷新,所以它就消失了.fflush(stdout);在printf之后尝试一下.顺便说一下,你也应该在这之前做到这一点fork(),这样孩子和父母都不会尝试在fork之前编写缓冲输出.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有