【问题标题】:trouble programming UNIX redirectsUNIX重定向编程问题
【发布时间】:2013-11-10 00:16:48
【问题描述】:

我正在尝试在 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。

【问题讨论】:

  • fdW -1 吗?要打开的第二个参数是否应该是 O_WRONLY|O_APPEND
  • 模拟>>:第二个参数可以是O_CREAT|O_WRONLY|O_APPEND
  • @J.F.Sebastian 是的,我现在知道我的问题是什么了。如果我使用 O_APPEND,我不知道我应该使用 O_CREAT。谢谢你的回答。
  • 这就是为什么您必须检查所有返回值是否有错误。
  • @MarkPlotnick 谢谢你的回答

标签: c unix redirect pipe


【解决方案1】:

问题是我不知道我必须使用O_WRONLY,即使我使用的是O_APPEND

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-11
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多