c-在带有文件描述符的execl中使用grep



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

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

其中fd是文件描述符。所以基本上,这应该是fd指向的文件中的"print"的grep。虽然我没有收到编译错误/警告,但它似乎不起作用。当我给出"Something.txt"之类的文件名而不是fd 时,它就起作用了

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

有两个问题:

  • 你在引诱execl使用一个小整数作为指针
  • 您希望grep能够理解文件描述符

如果我正确理解你的问题,就在你exec之前,你应该将描述符重定向到STDIN_FILENO。类似于:

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

这应该起作用,因为grep在没有提供输入文件的情况下分析其stdin。

相关内容

  • 没有找到相关文章

最新更新