#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/wait.h>
int pid1,pid2;
void main()
{
int fd[2];
char outpipe[100],inpipe[100];
pipe(fd);//創建一個管道
while((pid1=fork())==-1);
if(pid1==0)
{
//lockf(fd[1],1,0);
sprintf(outpipe,"Child 1 is sending a message!");//把串放到陣列outpipe中
write(fd[1],outpipe,50);//向管道寫長為50字符的串
sleep(2);//自我阻塞2秒鐘
//lockf(fd[1],0,0);
exit(0);
}
else
{
while((pid2=fork()==-1));
if(pid2==0)
{
sprintf(outpipe,"Child 2 is sending a message!");
write(fd[1],outpipe,50);
sleep(2);
//lockf(fd[1],0,0);
exit(0);
}
else
{
wait(0);//同步
read(fd[0],inpipe,50);//從管道中讀50字符的串
printf("%s/n",inpipe);
wait(0);
read(fd[0],inpipe,50);
printf("%s/n",inpipe);
exit(0);
}
}
}
uj5u.com熱心網友回復:
1: exit(0);表退出程式,放在函式中是否放錯了?2:我記得pip要開兩個行程才能測驗,你再看看pip原理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90277.html
標籤:C語言
上一篇:如何理解哈密頓回路?
下一篇:資料結構疑問
