尝试使用 exec 运行 grep 命令

Trying to run grep comman using exec

我正在尝试在 fork 系统调用后 运行 我的子进程中的 grep 命令。它显示错误:grep: .: No such file or directory。我的执行代码如下:

execl("/bin/grep","grep","a","*.*",NULL);

如果我替换 * 。 * 使用文件名可以正常工作。我的错误是什么?

*.* 的论点按字面意思传递给 grep。它不被 shell 解释 - 所以 grep 试图打开一个名为 *.* 的文件(但失败了)。

如果您想在程序中执行 shell 类似 globbing 的操作,您可以查看 glob 函数:

#include <glob.h>

int glob(const char *pattern, int flags,
         int (*errfunc) (const char *epath, int eerrno),
         glob_t *pglob);

void globfree(glob_t *pglob);