是否可以使用C程序寫入正在運行的shell(Bash)的stdin?其實我想用C程序中的bash
執行命令,而不使用exec*()
系統調用。從C程序執行shell命令
0
A
回答
0
/bin/echo
是一個C程序,通常。
/bin/echo ls | sh
Voilà!一個C程序剛剛寫入正在運行的shell的標準輸入,並執行了一條命令。這顯然是可能的。
man popen
現在是你的朋友。 (超越用戶的範圍,超出用戶的範圍,system()
以及需要引用等討論)
+0
還有一個程序'/ bin/echo';但是,大多數shell都有一個內置命令'echo'。 –
+0
使用內置模塊會不必要地回答問題。儘管可以指向'/ bin/echo'並說「這是一個編譯好的C程序,在那個文件裏,」。 – JdeBP
相關問題
- 1. 從命令行執行Django Shell命令
- 2. 執行shell命令(c)
- 3. C++ linux從程序執行命令行
- 4. 使用線程執行shell命令C++
- 5. 從用戶輸入獲取shell命令並執行C程序
- 6. 從python執行shell命令
- 7. 從Java執行shell命令
- 8. 從ruby執行shell命令
- 9. 執行命令shell從PHP遠程
- 10. 從C程序執行pi命令
- 11. 如何從C++程序執行命令行命令
- 12. 命令執行shell
- 13. 執行shell命令
- 14. Shell命令執行
- 15. 在c程序中運行shell命令
- 16. 可可/ Objective-C Shell命令行執行
- 17. 從popen執行命令shell並設置其他命令shell
- 18. 執行shell命令並在C程序中讀取其輸出
- 19. 在C程序中使用sudo執行shell命令
- 20. C程序的命令行執行
- 21. 如何在C中執行shell命令?
- 22. C++在shell中執行許多命令
- 23. 如何從應用程序執行shell命令
- 24. 從Foxx應用程序執行shell命令
- 25. 從.NET應用程序執行一個shell命令
- 26. 從Django應用程序/項目執行shell命令
- 27. 從命令行執行程序
- 28. 從shell腳本執行R命令
- 29. 從java執行多個命令shell
- 30. 從Scala執行shell命令REPL
最終,您將需要一個fork()和一個exec *()調用運行'bash'程序;沒有任何真正的選擇(除非你數['posix_spawn()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html),而我沒有)。那麼,在'bash'上組織管道的問題是爲了處理標準輸入(從你的程序?)和標準輸出(到你的程序?)和標準錯誤,以及正確的shell選項('-i'?)。你預計在你的俘虜外殼中執行什麼樣的命令? –
我只是想從我的程序中獲取一個字符串輸入,並將此字符串發送到任何正在運行的bash實例,並且bash會爲我執行執行並將相應的輸出發送到我的程序。 –
請注意,您不能隨意將您的命令發送給Bash的任意運行實例;他們中的大多數都與別人的工作掛鉤,並且位於錯誤的當前目錄中,並且設置了錯誤的環境等等。你將需要運行你自己的shell;如果你小心的話,你不必爲每個單獨的命令運行一個新的shell,但是你需要fork()和exec *()和你通信的bash。你需要兩到三個管道(shell的標準輸入,shell的標準輸出,可能是shell的標準錯誤),你需要考慮如何讀取它們。 –