execlp 系统调用不打印到标准输出?
execlp system call not printing to standard output?
我正在使用 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
之类的东西,这应该会让您知道实际可执行文件的位置。
我正在使用 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
之类的东西,这应该会让您知道实际可执行文件的位置。