2014-01-24 71 views
0

我正在創建一個玩具殼。我想執行一個二進制文件,它位於PATH變量或當前目錄中。這是我在做什麼來實現它:使用exec *執行二進制文件c

execl(filePath," -e ",com.arguments,NULL); //e.g of filePath: /home/dino/programs/mywrapper 

現在工作得很好像which命令的一些可執行文件。但對於像tar這樣的命令,會出現一大堆錯誤。

基本上所有我想要的是execl執行在我的shell中filePath中提到的可執行文件。我該怎麼做?

編輯: com.arguments是參數列表。例如在which bashbash成爲我的論點。在tar -zvcf bazinga.tar.gz bazinga/-zvcf bazinga.tar.gz bazinga/成爲我的論點等

+0

你叫'fork()的前''調用EXECL()'? –

+0

是的,我打電話fork() – sudeepdino008

+0

請記住,您傳遞給程序'exec'的參數是該程序中的'argv'。所以第一個參數(應該是'argv [0]')應該是程序名稱。 –

回答

0

execl's documentation

The first argument, by convention, should point to the 
filename associated with the file being executed. 
相關問題