0
A
回答
2
工作,也許你需要告訴shell應該是互動的:
system("/bin/sh -i");
然而,我相信你原來的system()
調用也應該產生了一個shell提示符。
兩種表示法(使用和不使用「-i」)在此程序給我一個殼提示(返回到前殼通過鍵入「退出」和RETURN或控制-d):
#include <stdlib.h>
int main(void)
{
system("/bin/sh -i");
return 0;
}
1
這個程序按預期工作對我來說:
int main()
{
int ret = system("/bin/sh");
printf ("Shell returned %d\n", ret);
return 0;
}
使用-i導致某種形式的重定向問題,一切只要我鍵入產生輸出命令掛起。
系統()和exec()之間存在重要差異。 系統()實際上是相同的/bin/sh -c yourCommand
在命令行上,所以system("/bin/sh")
相同
/bin/sh -c /bin/sh
這就是爲什麼它很少使用,因爲執行您想要的命令,首先開始的不必要的shell進程。 )
int main()
{
int ret = exec("/bin/sh");
printf ("Shell returned %d\n", ret);
return 0;
}
的的printf(一切將永遠不會被因爲執行後:
EXEC()導致整個過程圖像由指定的命令,所以如果我寫了更換整個過程轉換爲/bin/sh的實例。運行子命令的正確方法是分叉,然後在子中執行,然後在父代中等待。
相關問題
- 1. 控制從代碼
- 2. 從C++代碼控制MATLAB dll
- 3. 從C代碼打開Linux控制檯
- 4. 控制RadioButton DataGridTemplateColumn從代碼
- 5. shell的僞代碼爲C++代碼
- 6. 控制代碼
- 7. 從python控制shell stdin
- 8. WPF讀樣式在C#代碼控制
- 9. 控制C#代碼中的XAML標籤
- 10. C#顯示HTML代碼控制需要
- 11. C++代碼自動關閉控制檯
- 12. c#代碼來控制swf文件
- 13. 導入從ClearCase的源代碼控制一個項目,RTC源代碼控制
- 14. 控制VS代碼
- 15. Ajax代碼控制
- 16. 從控制器代碼中定義DataContext
- 17. 從ascx代碼隱藏的asp控制
- 18. 從C#調用DeviceIoControl與IOCTL_DVD_ *控制代碼
- 19. 訪問XAML從C#隱藏代碼控制
- 20. 修改控制檯應用程序C鋒利代碼從SharePoint
- 21. 從ANSI C代碼獲取控制流圖
- 22. Unix C Shell - 作業控制問題!
- 23. 通過HTML代碼控制python代碼
- 24. 指令代碼控制器代碼
- 25. 從C#代碼
- 26. 執行C++代碼的Android崩潰不能用adb shell複製
- 27. 來自C++代碼的shell命令
- 28. 使用shell腳本對齊C代碼
- 29. .NET Shell控制庫
- 30. 從shell運行Rails控制器方法?
沒有工作?你能詳細說明一下嗎?而且,你使用的是哪一個exec系列功能? – vpit3833 2010-12-03 07:47:08