管道原理,C语言实现

 

 

execve(参数1,参数2,参数3)

参数1:命令所在路径

参数2:命令的集合

参数3:传递给执行文件的环境变量集

 

dup相关知识点:

https://blog.csdn.net/tiandc/article/details/81489447

 

 

#include <unistd.h>

int fd[2];

void run_ls(void)
{
	char *argv[]={"ls", "-l", NULL};	//传递给执行文件的参数数组,这里包含执行文件的参数
	char *envp[]={0, NULL};				//传递给执行文件新的环境变量数组  

	dup2(fd[1], 1);
	close(fd[0]);
	close(fd[1]);
	execve("/bin/ls", argv, envp);
}

void run_wc(void)
{
	char *argv[]={"wc", NULL};	//传递给执行文件的参数数组,这里包含执行文件的参数
	char *envp[]={0, NULL};		//传递给执行文件新的环境变量数组  

	dup2(fd[0], 0);
	close(fd[0]);
	close(fd[1]);
	execve("/usr/bin/wc", argv, envp);
}

int main(void)
{
	pipe(fd);
	if(fork() == 0)
		run_ls();
	else
		run_wc();
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值