1

我正在尝试学习考试,但我无法弄清楚一个简单的 fork 程序。

我有这段代码,必须向它添加代码,以便父进程通过 PIPE 将值发送给子进程n。孩子应该加倍价值,不打印任何东西并将其返回给父母。

然后父母应该在屏幕上打印它。

int main() {
int n=1;
if(fork() == 0) {
}
printf(“%d\n”, n);
return 1;
}

我真的不知道 PIPE 是如何工作的以及如何使用它们。谁能帮我?

4

1 回答 1

1
pid_t cp;
int fi[2],st;
int n;
if(pipe(fi)==-1) {perror("pipe error");exit(0);}
if((cp=fork())==-1) {perror("fork"); exit(0);}
else if(cp==0)
 {
        sleep(2);
       close(fi[1]);
      read(fi[0],&n,2);
       n*=2;
        close(fi[0]);
        exit(n);
  }
  else
   {
        close(fi[0]);
         write(fi[1],n,2);
        close(fi[1]);
        waitpid(cp,&st,0);
          printf("%d",st);
          exit(0);
  }}      




管道的工作非常简单。一个 PIPE 包含两个端点,一个用于读取,另一个用于写入。您必须在阅读或写作时关闭相应的端。之后,您将其用作具有 read() 和 write() 函数的常规文件。

请原谅我的格式,我在手机上打字。

于 2013-06-29T11:48:53.357 回答