翻開高級unix編程,仔細看了一下管道,并將書中的例子修改并實現。
雖然很簡單,確揭示了多進程編程的基礎。
用管道非常真是非常的簡單。以前只是看了,沒有實踐!
#include <common.h>
#define MAXLINE 256
int main(int argc, char * argv[])

{
int fd[2]; //管道fd
pid_t pid; //子進程的PID
char line[MAXLINE];
if( (pipe(fd) ) < 0 ) //創建PID,其中fd[0]為讀管道,fd[1]為寫管道
{
cout<<"pipe error"<<endl;
exit(0);
}
if( (pid = fork() )<0) //創建子進程
{
cout<<"fork error"<<endl; //一般是進程過多的時候才會出錯
exit(0);
}
//執行fork后,當前進程會得到子進程的pid,而子進程得到的是0,可以通過getppid()取得父進程
if( pid > 0 )
{
//父進程向管道寫數據
char buffer[MAXLINE];
close(fd[0]);
cout<<"input:";
cin.getline(buffer,MAXLINE);
write(fd[1],buffer,strlen(buffer));
}
else
{
//子進程接收數據
close(fd[1]);
int n = read(fd[0],line,MAXLINE);
line[n] = 0;
cout<<"read message:"<<line<<endl;
}
return 0;
}



