2016-09-22 54 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