我試圖使用execve來運行ls命令。目前我使用以下參數運行它:使用execve的新路徑運行ls命令
execve(args[0], args, env_args)
//args looks like {"ls", "-l", "-a", NULL}
//env_args looks like {"PATH=/bin", "USER=me", NULL}
我想到這做的是運行使用我的新env_args這意味着它會查找LS在我的道路ls命令。然而,這段代碼實際上並沒有做任何事情,當我運行代碼時,它只是返回到我的命令提示符而沒有輸出。
使用相同的參數[]我使用execvp和ls工作並搜索我當前的路徑。
你能告訴我我做錯了什麼嗎?
我想要做的是寫我自己的shell程序,我可以創建和導出我自己的環境,並讓exec使用我在char **中定義的環境。從本質上講,我正在編寫自己的函數來操作env_args來添加和刪除變量,並且當我調用exec時,我希望能夠對{「ls」,「-l」,NULL}調用exec,並讓它向下看我的新環境一個名爲ls的有效程序的路徑變量。我希望這能解釋我做得更好一點。在這種情況下,我不認爲extern environ var會適用於我。
好的,但是說我想讓execvp看看不同於我的環境中定義的路徑嗎?那是我正在尋找的那種功能 – james
關於第二個想法,我不認爲環境就是我想要的。我仍然不確定如何做到這一點。 – james
你爲什麼認爲設置環境不是答案?你機器上的ls'在哪裏找到? –