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 bash
,bash
成爲我的論點。在tar -zvcf bazinga.tar.gz bazinga/
,-zvcf bazinga.tar.gz bazinga/
成爲我的論點等
你叫'fork()的前''調用EXECL()'? –
是的,我打電話fork() – sudeepdino008
請記住,您傳遞給程序'exec'的參數是該程序中的'argv'。所以第一個參數(應該是'argv [0]')應該是程序名稱。 –