0
我試圖從C++使用execv系統調用來啓動一個進程。直到我試圖通過調用一個非交互式shell來啓動我的進程之前獲取用戶環境,它才能正常工作。使用execv和shell的問題exec
我基本上改變的是,我的命令(對於這個例子,我使用了一個轉儲argv []數組的test.bin文件)前綴爲:/ bin/sh -l -c「exec ./testbin testargv1 testargv2"
當我從另一個shell啓動的命令,我得到這個:
0:./testbin 1:./testargv1 2:./testargv2
同時,當我啓動它通過execve在C++程序中,我得到:
0:/ bin/sh的 1:-l 2:-c 3:EXEC ./testbin testargv1 testargv2
選自C內,我簡單地做如下:
char* exe = "/bin/sh";
char** params = { "/bin/sh","-l","-c","exec ./testbin testargv1 testargv2",0 };
execv(exe,params);
就像從execve啓動時一樣,shell在分叉之前不會重新排列argv。
有人有提示嗎?
不正是這一點,但這個問題的確是我的非僞 - 傳遞錯誤的可執行文件名的代碼 – 2014-10-16 21:12:36