dup2

    0热度

    1回答

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/stat.h> #include <fcntl.h> int main(void) { int pfd1[2]; int pfd2[2]; pid_t pid1, pid

    1热度

    1回答

    void pipe_execute(char all[][MAX_SIZE],int i,int n) { if(i==n) { execute(all[i-1]); } else { int fd[2]; char cmd1[100]; pipe(fd); pid_t pid = fo

    1热度

    1回答

    我还不熟悉进程,管道和dup2,因此我希望有人能帮我弄清楚我创建的程序有什么问题。这个程序应该运行ls | wc。到目前为止输出我得到的是: wc : standard input : Bad file descriptor 0 0 0 ls : write error : Bad file descriptor 后,我得到这个输出,终端仍然接受输入。这就像wc仍然在运行

    0热度

    1回答

    我目前正在研究一个小外壳,并试图执行由多个命令组成的作业(如“ls | sort”)。 由于排序程序似乎遇到了“错误的文件描述符”,所以我在重定向时遇到了问题。 下面的代码: 第一个命令: if (pipe(job->tubes[num_comm]) == -1) { perror("Erreur création tube"); ex

    0热度

    1回答

    我有一个调用另外一个C程序,就像 system("path/program2 path/file.txt"); 使程序可以处理指令文件。该程序提供了我想在我的C程序中使用的信息,但我没有“program2”的源,因此我无法编辑它。 目前我正在编写一个文件(我可以选择在控制台上显示信息或写入文件之间进行选择),然后在我的C程序中打开文件然后阅读,但我想也许这是可能的使它更好,但我真的生锈的C .

    0热度

    1回答

    复制调用dup的文件描述符fd,并关闭原始文件描述符。 是否所有重复的文件描述符也关闭?

    1热度

    1回答

    写入之后从管道中读取我创建了一个功能exec_in_child这需要命令行参数,管文件描述符(fds),read_flag和write_flag作为输入。当write_flag设置为1时,子进程应复制stdout至fds[1],然后执行该命令。当read_flag设置为1时,孩子应该复制stdin至fds[0]并执行该命令。 当我正在读/写 的另一端时,是否必须关闭管道的一端? 下面的代码不起作用

    0热度

    1回答

    我一直想创建一个子进程,两次分叉创建两个子进程。输出一个,发送给另一个。 我找到了这个示例代码。但我很困惑它是如何工作的。 我找到了example here。但是,我对dup的使用方式以及它的工作原理感到困惑。 即 close(1); dup(fd[1]); close(fd[0]); close(fd[1]); 输出然后用管道输送到第二叉形的过程,它的配管连接是这样的: close(0

    0热度

    1回答

    我正在尝试在Linux上的dup2。我的测试程序是:我打开一个管道,尝试复制stdin到fifo写入,dup stdout到fifo读取,我希望当我运行这个程序时,stdin被写入fifo,并且fifo自动将内容转储到标准输出: #include<stdio.h> #include<unistd.h> int main(){ int pipefd[2]; pipe(pipe

    0热度

    1回答

    我想通过套接字重定向我的stdin,stdout和stderr。 此代码在Linux上工作: dup2(socket, 0); dup2(socket, 1); dup2(socket, 2); 但Windows因为套接字没有描述符。 如何在Windows中执行此操作?