红联Linux门户
Linux帮助

Linux利用管道父子进程间传递数据

发布时间:2016-02-07 10:38:21来源:linux网站作者:LEll66

fork()函数:用于创建子进程,子进程完全复制父进程的资源,相当于父进程的拷贝。具体理解,运用父进程的同一套代码,通过判断进程ID来执行不同进程的不同任务。

返回值正常为子进程ID,出错返回负值。

pipe()函数:用于创建管道,返回负值表示创建失败。


简单实例:
功能:父进程通过管道向子进程传递字符串,然后子进程向屏幕打印出所收到的字符串。


#include <stdio.h> 
#include <unistd.h> 
#include <sys/types.h> 

int main(void) 

int n,fd[2]; 
pid_t pid; 
char line[1024]; 

if (pipe(fd) < 0) 
return 1; 
if ((pid=fork()) < 0) 
return 1; 
else if (pid > 0)//parent 

close(fd[0]);   //close parent's read-port 
write(fd[1],"I am from parent!\n",19);  //write to pipe 

else//child 

close(fd[1]);   //close child's write-port 
n = read(fd[0],line,1024);  //read from pipe 
printf("%s%d\n",line,n); 

printf("I am public!\n"); 
return 1; 


运行结果:

I am public!
I am from parent!
19
I am public!


通过上面实例,可以清楚认识父子进程运行情况;通过关闭父进程读端口,关闭子进程写端口实现数据由父进程传向子进程的单向管道传输。


本文永久更新地址:http://www.linuxdiyf.com/linux/17924.html