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;
}