在execl中使用grep和文件描述符

时间:2012-08-22 20:28:23

标签: c grep exec file-descriptor unistd.h

我正在尝试执行以下操作:

 execl("/bin/grep","grep","print",fd,NULL);

其中fd是文件描述符。 所以基本上这应该是fd指向的文件中的“print”。 虽然我没有编译错误/警告但它似乎不起作用。 当我提供"Something.txt"而不是fd

等文件名时,它会起作用

有人可以告诉我为什么这不起作用吗? (我知道execl只需要const char arg*,但正如我所说没有编译错误/警告)。

1 个答案:

答案 0 :(得分:5)

有两个问题:

  • 您正在引用execl使用小整数作为指针
  • 您希望grep了解文件描述符

如果我在您exec之前正确理解您的问题,则应将描述符重定向到STDIN_FILENO。类似的东西:

dup2(fd, STDIN_FILENO);
execl("/bin/grep", "grep", "print", NULL);

这应该有效,因为grep在没有提供输入文件的情况下分析它的标准输入。