C语言 Unix重定向命令编程



我正在编写一个程序,我想以编程方式将命令重定向到另一个进程。因此,如果我接收命令作为参数,我希望接收父进程的输出。

我的代码是:
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <sys/wait.h>
int main(int argc, char* argv[]) {
{ 
char msg[8]=“message”;
int pp[2];
if(pipe(pp)<0) {
printf("Error pipe");
exit(1);
}
if (!fork())
{ 
close(fd[0]);

//TODO...
} else { 
close(fd[1]);
read(fd[0], msg, 8);
close(fd[0]);
}
} 

我忘记了子部分,在这里我执行命令并进行重定向。我使用管道在子进程和父进程之间进行通信。

在子端,我已经关闭了未使用的管道端,然后我不知道如何继续。

你能帮忙吗?

步骤如下:

  1. 关闭管道读取和标准输出
  2. dup()管道写重定向管道写到标准输出,fd=1
  3. 关闭初始管道写入
  4. 执行命令,从argv中读取第一个参数

你的代码变成这样:

if (!fork())
{ 
close(pp[0]);
close(1);
dup(pp[1]);
close(pp[1]);
execlp(argv[1], argv[1],(char *)0); 
exit(0)
}

相关内容

  • 没有找到相关文章

最新更新