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
的内容,这应该让您知道实际可执行文件的位置。
相关文章:
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 使用提升过程获取 shell 命令的标准输出
- 将标准输出重定向到ostream
- 如何在C++中执行命令并获取命令的返回代码标准输出和标准
- 在程序执行期间从标准输出重定向到自定义流
- 标准输出C++意外行为
- 防止 qDebug() 写入标准输出
- 有没有办法知道C++中将打印到标准输出的大小?
- 在标准输出中执行打印会导致数组中随机分配值
- 反转行的程序未打印为标准输出
- 在C++中打印到标准输出时 /* 注释的行为
- 在 c/c++ 中编辑从 stdin 打印在标准输出上的文本
- 通过C++从标准输出中的一些打印数据中提取特定值
- EXECLP系统调用不打印到标准输出
- (可选)在运行时打印到标准输出
- 如何在Linux (GCC)中打印输出(而不是标准输出)
- Linux打印文档到标准输出或文件
- 是否有一种方法可以查看哪个线程正在使用gdb打印标准输出或标准错误?
- 以编程方式从父进程的子进程捕获打印,因此它们不会转到标准输出
- 将字符串变量的值与一些文本链接,并将其打印到C++中的标准输出