是否可以使用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的标准错误),你需要考虑如何读取它们。 –