2016-09-22 134 views
0

我使用popen来执行type -t type,这给我一个错误信息-t找不到。当我在shell中执行type -t type时,这给我内置。为什么这不适用于popen在linux中使用type -t命令c。?

+0

也许显示你写的代码?这是编译器错误消息还是运行时错误? – UnholySheep

+0

FILE * file = popen(“type -t type”,“w”);此错误在运行时出现在标准输出中。当我直接在shell中使用type -t类型时,我得到了内建的。 (没有错误) – Ellebasi

回答

0

POSIX指定与popen一起使用的外壳是/bin/sh。您的交互式shell可能是bashtype命令的行为与shbash不同。 sh不支持-t

您的系统可能有/bin/sh符号链接到/bin/dash,但这只是一个实现细节。

如果需要bash行为,运行bash明确:

popen("/bin/bash -c 'type -t type'", "r") 

Live demo

+0

我的交互式shell是bash。在这个解释中,不支持-t。谢谢您的回答。有没有解决方法?如果它是一个程序,是否有另一个命令给我内置命令的结果? – Ellebasi

+0

梦幻般的作品。 :-)如何在if语句中使用popen(“/ bin/bash -c”类型-t类型'“,”r“)的输出(内建文件)? – Ellebasi

+0

我看到它把ultin和ile,而不是内置和文件输出。这怎么解决? – Ellebasi