我正在C语言中工作,使用以下参数调用popen时遇到问题:
void exampleFunction(void)
{
.
.
.
FILE* in = popen("alias -p", "r");
.
.
.
}
当我以popen
这种方式打电话时,我收到以下消息:
alias: -p not found
我不知道实际出了什么问题,因为当我popen
用以下参数调用时:
FILE* in = popen("ls -i", "r");
没问题,我使用相同的语法。
也许有人意识到实际上是错的。
该alias
命令内置在外壳程序中。
popen
与一样system()
,调用/bin/sh
以执行指定的命令。您的交互式外壳可能是bash,它支持的-p
选项alias
。/bin/sh
,具体取决于您的系统配置。
无论如何,即使这样做有效,也不会给您任何有用的信息。该popen()
调用将调用一个新的外壳,并且(再次取决于您的配置),它可能不会设置您的别名,因为它不是交互式外壳。
该ls -i
命令的工作,因为ls
是一个外部命令,所以不管它是从调用它的工作方式相同bash
或/bin/sh
,或者交互或者非交互的shell。(有时ls
可以将其定义为别名或shell函数,但此类定义通常不会干扰该-i
选项的使用。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句