EXECLP系统调用不打印到标准输出

execlp system call not printing to standard output?

本文关键字:标准输出 打印 系统调用 EXECLP      更新时间:2023-10-16

我正在使用execlp运行wc命令,使用文件作为额外的参数来读取字数统计。此 unix 命令:

wc -l HelloWorld.class

给出的输出为:7 HelloWorld.class

但是在我使用 execlp 的C++代码中,这行代码:

int rc2 = execlp("/bin/wc", "wc", "-l", "HelloWorld.class",  (char *) 0);

似乎不起作用(它是空白的)。

我只运行那一行代码,并从中得到一个空白输出。c++ 文件的目录与我执行 unix 命令的位置相同。

虽然它与您的特定问题无关,但计算.class文件中的行数并没有多大意义。您可能希望在.java文件或其他文本文件上执行此操作。

对于您的特定问题,应首先检查/bin/wc是否为该可执行文件的正确路径。在我的系统(Debian)上,它是/usr/bin/wc .

由于execlp无论如何都会复制路径搜索功能(如果它不包含/字符),因此您可能只使用:

int rc2 = execlp ("wc", "wc", "-l", "HelloWorld.class",  (char *) 0);

如果要检查路径,请使用类似 shell 中的 which wc 的内容,这应该让您知道实际可执行文件的位置。