c - UNIX 重定向编程问题

标签 c unix redirect pipe

我正在尝试模拟 unix 中的重定向和管道(<、>、>>、|)。我已经设法对除附加(>>)之外的所有内容进行编程。这是代码的和平,我检查 >> 是否在 cmd 字符串中。

   if(!strcmp(cmd[i], ">>")){
        aux[i] = NULL;
        fdW = open(cmd[i+1], O_APPEND);
        dup2(fdW, STDOUT_FILENO);
        close(fdW);
    }

但是,当我调用 dup2() 将 STDOUT 重定向到打开的文件时,会返回此错误:

  cat: write error: Bad file descriptor

有谁知道为什么 O_APPEND 会发生这种情况,而不是 O_WRONLY。

最佳答案

问题是我不知道我需要使用 O_WRONLY,即使我正在使用 O_APPEND

关于c - UNIX 重定向编程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19884782/

相关文章:

java - 将 Windows 迁移到 Linux Java Web 应用程序

ajax - 如果 session 超时,如何在MVC中的jquery ajax调用后重定向到新页面?

redirect - tee stderr 到文件(csh/tcsh shell)

c - C 语言中带有 switch case 的 while 循环不起作用

c - char 与 char 数组 : Why is there a difference? 的堆栈变量分配

c - 理解反汇编——看两个 main() 的

创建我的第一个 Unix 服务器/客户端,但出现 "shmget: Invalid argument"错误甚至更多。 [C]

c - 如何理解为什么会出现 ARM 异常?

c - 进程如何知道信号灯可用

javascript - 有哪些技术可以防止登录时重定向到 Dropbox 页面