使用像这样的等待功能一个这样的程序,这是一个:

#include<stdio.h> 
#include<stdlib.h> 
int main() 
{ 
    int pid,fd[2]; int n; char line[20];        
    if(pipe(fd)<0) { 
        printf("Error creating pipe"); 
    } else { 
        pid=fork(); 
        if(pid<0) { 
            printf("Error while forking"); 
        } else { 
            if(pid>0) { 
                close(fd[0]); 
                write(fd[1],"Hello\n",6); 
                while(wait((int *)0)!=pid);
            } else { 
                close(fd[1]); 
                n=read(fd[0],line,20); 
                if(n<0) 
                printf("Error reading a file"); 
                write(1,line,n); 
            } 
        } 
    } 
    return 0; 
}   
有帮助吗?

解决方案

经验丰富的人的答案是正确的。但应当注意的是,铸造是根据标准,因为完全没有必要的,在一个指示器上下文使用0是空指针。

其他提示

请参阅人等待(2)

wait((int *)0)调用waitpid(-1, (int *)0, 0)。该名男子页面状态:

  

如果状态不是NULL,等待()和waitpid函数()存储状态信息在INT它指向。

下面,status是NULL(0)。因此,你要wait呼叫等待的时间在任何一个孩子过程中的状态变化,并没有返回一个状态。呼叫只是检查是否发生了特定的子进程(在你的情况pid)的状态变化。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top