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

时间:2015-01-11 10:54:53

标签: c++ system-calls

我使用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命令的目录相同。

1 个答案:

答案 0 :(得分:1)

虽然它与您的具体问题无关,但计算.class文件中的行数并不重要。您可能希望在.java文件或其他文本文件中执行此操作。

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

由于execlp无论如何重复路径搜索功能(如果它不包含/个字符),您可以使用:

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

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