我正在使用C语言编程,当调用以下参数的popen函数时遇到了问题:
void exampleFunction(void)
{
.
.
.
FILE* in = popen("alias -p", "r");
.
.
.
}
当我使用这种方式调用
popen
时,会出现以下消息:alias: -p not found
我不知道实际上出了什么问题,因为当我使用以下参数调用popen
:
FILE* in = popen("ls -i", "r");
没有问题,我正在使用相同的语法。
也许有人会意识到实际上出了什么问题。
popen()
通过/bin/sh
调用命令,因此例如popen("alias", "r")
将起作用(尽管它可能不会产生任何输出)。问题在于/bin/sh
的alias
命令不支持-p
选项。请参见我的答案。 - Keith Thompson/bin/bash
提供输入,又可以收集其输出。虽然可行,但不能通过简单的pipe()
调用实现。此外,在大多数shell中,ls
不是内置命令。 - Keith Thompson