1、管道:是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名pipe文件。向管道(共享文件)提供输入的发送进程(即写进程),以字符流形式将大量的数据送入管道;而接收管道 输出的接受进程(即读进程),则从管道中接收数据。由于发送进程和接收进程是利用管道进行通信的,故又称为管道通信。
下面是我自己写的一个关于管道父进程与子进程间通信,子进程向父进程发送自己的进程标示符以及字符串,父进程通过管道读出子进程发来的 信息!!!
/*pipe.c*/
#include
#include
#include
#inc
2、lude
int main()
{
int fs[2];//定义一个数组 长度为2
char s[35]={"is sending a message to parent\0"};//定义一个字符创
char b[60],c[60];
pid_t pid;// 进程
int p;
pipe(fs); // 创建管道 此函数是系统函数 参数就是一个长度为2 的数组 fs[1] 写 fs[0]读
pid =fork();//创建子进程 先创建管道在创建子进程 如果先创建子进程在创建管道的话,子进程识别不了管道。
if(pid ==0
3、)//如果 是子进程
{
sprintf(b , "%d ", getpid());// getpid在这里是得到子进程的进程号,然后把进程号发在char字符数组中
strcat(b,s);//把字符串s中的字符追加到字符串b中
close(fs[0]);//向进程中写之前 关闭读 可有可无
write(fs[1],b,sizeof(b));//把字符串b中的字符串 写进管道
exit(0);结束进程退出子进程
}
else
{
read(fs[0],c,sizeof(c));从管道中读取字符串
printf("%s\n",c);//输出从管道中读取的字符串
exit(0);
}
return 0;
}
在linux下编译 :gcc pipe.c -o pipe
:./pipe
输出结果:3424 is sending a message to parent
注:每次运行进程号都不一样