Linux C 学习日记(1)无名管道

子进程从父进程读取参数,以便于子进程执行execlp函数。
父进程把数据写入到 无名管道中 ,子进程从 无名管道 读取数据,并作为参数传到execlp函数中。
*无名管道必须在亲缘关系的进程中使用,当进程和程序结束之后,无名管道即刻被销毁


#include<unistd.h>
#include<stdio.h>
#include<string.h>
int main()
{
pid_t pid;
int pipefd[2];       //定义一个无名管道 读端 0  写端 1
char data[20];
pipe(pipefd);       //定义一个无名管道 
pid=fork();         //创建进程
if(pid==0)          //子进程
{
  printf("This is child process!\n");  
  close(pipefd[1]);          //关闭写端 1
  read(pipefd[0],data,20);         //从读端 0 里读取数据 存到 data 
  execlp("ls","-l",data,NULL);      //execlp 函数 显示当前目录下所有文件 
}
else if(pid>0)     //父进程
{
  printf("This is parent process!\n");
  close(pipefd[0]);                //关闭读端 0
  char string[20]="/work";
  write(pipefd[1],string,20);     //从 string 中读取数据到 写端 1
  wait(NULL);             //等待子进程结束,父进程再结束
}
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值