我正在尝试执行以下操作:
execl("/bin/grep","grep","print",fd,NULL);
其中 fd 是一个文件描述符。
所以基本上这应该在 fd 指向的文件中为“打印”进行 grep。
尽管我没有收到编译错误/警告,但它似乎不起作用。
当我给出诸如 "Something.txt"
而不是 fd
有人能告诉我为什么这不起作用吗? (我知道 execl 只接受 const char arg*
但正如我所说没有编译错误/警告)。
最佳答案
有两个问题:
- 你诱使
execl
使用一个小整数作为指针 - 你期望
grep
理解文件描述符
如果我正确理解您的问题,就在您exec
之前,您应该将描述符重定向到STDIN_FILENO
。像这样的东西:
dup2(fd, STDIN_FILENO);
execl("/bin/grep", "grep", "print", NULL);
这应该可行,因为 grep
在未提供输入文件时分析其标准输入。
关于c - 在带有文件描述符的 execl 中使用 grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12080905/