c - 创建管道命令和重定向输出的问题
问题描述
如标题所示,我正在尝试创建管道命令,但遇到了一个重大错误。我无法弄清楚将一个命令的输出重定向到子函数中的另一个命令的问题。我不明白我的重定向错误。
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
void child(char *command, int fd[], int place, int argc){
if (place != argc){
close(1);
dup(fd[place+1]);
close(fd[place+1]);
}
close(fd[1]);
close(0);
dup(fd[0]);
close(fd[0]);
int exec_return = execlp(command, command, (char *)NULL);
}
int main(int argc, char *argv[]){
int sizeOfFd= 2*(argc-1);
int fd[sizeOfFd];
for(int i = 0; i < argc-1; i = i + 1){
if(pipe(fd+2*i) != 0){
exit(errno);
}
if (argc <= 0) {
return EINVAL;
}
}
for (int j = 1; j < argc; j = j + 1){
int wstatus;
pid_t pid = fork();
if (pid == -1) {
exit(0);
}
if (pid > 0) {
waitpid(pid, &wstatus, 0);
}
if(pid == 0) {
child(argv[j], fd, j, argc);
}
}
return 0;
}```
解决方案
推荐阅读
- vue.js - 在 Vue.js 中进行样式设置的最佳且简单的方法是什么?我可能认为引导程序是最好的选择
- wordpress - Wordpress:如何只允许特定角色进行一些评论操作(删除、编辑...)?
- c++ - 在下面的代码中,外部块 m 如何给出输出 20
- hybris - 访问 Hybris 后台会导致系统冻结几分钟
- php - api json响应不是以数组形式出现
- vim - 跳转到系统verilog宏的问题`使用ctags在VIM中定义
- php - Laravel 中受密码保护的视图
- javascript - 为什么在 package.json 中添加了一个空行
- ignite - 点燃服务器:“以下缓存的所有服务器节点都已离开集群”
- angular - Angular:*ngFor 在父组件或子组件中?