假设之前已经声明了所有变量......因为它们已经存在.子进程不打印任何让我觉得它没有被执行的东西.父进程运行正常,尽管它没有获得共享内存.我为这段代码的长度道歉...
// 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之前编写缓冲输出.