编写一个多线程的程序完成如下功能:

1)父进程创建两个子进程(分别为子进程1和子进程2),父进程在创建完子进程后沉睡一秒,后正常退出;2)子进程1获取自己的进程ID;3)子进程1通过进程通信方式“管道”向子... 1) 父进程创建两个子进程(分别为子进程1和子进程2),父进程在创建完子进程后沉睡一秒,后正常退出;
2) 子进程1获取自己的进程ID;
3) 子进程1通过进程通信方式“管道”向子进程2传输自己的进程ID;
4)子进程2在收到子进程1的进程ID后,将其输出到终端上。
展开
 我来答
风若远去何人留
2016-05-16 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450104
专业C/C++软件开发

向TA提问 私信TA
展开全部

看看是不是符合你的要求。

#include <unistd.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
int pid1,pid2;
 
main( )

int fd[2];
char outpipe[100],inpipe[100];
pipe(fd);                       /*创建一个管道*/
while ((pid1=fork( ))==-1);
if(pid1==0)
  {
   while((pid2=fork( ))==-1);
    if(pid2==0)

sleep(1);
exit(0);
     }
     else
     {  
wait(0);              /*同步*/
         read(fd[0],inpipe,50);   /*从管道中读长为50字节的串*/
         printf("%s\n",inpipe);
         wait(0);
        exit(0);
    }
   }
else
  {
lockf(fd[1],1,0);
sprintf(outpipe,"%d", getpid()); 
/*把串放入数组outpipe中*/
write(fd[1],outpipe,50);  /*向管道写长为50字节的串*/
lockf(fd[1],0,0);
exit(0);
  }
}
追问
[root@bogon ~]# ./fork1
./fork1: line 5: int: command not found
./fork1: line 11: syntax error near unexpected token `fd'
./fork1: line 11: `pipe(fd); /*创建一个管道*/'
运行后出现这样的信息是什么意思
追答
这个是C语言的
不是shell
你可以
gcc fork1 -o fork
然后
./fork
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式