是否可以通过创建线程来执行 shell 命令,即不使用 popen/system 或任何 fork-exec 变体?为什么或为什么不?
为了提供更多上下文,我正在运行一个多线程程序,其中一个线程需要执行 shell 脚本。目前它使用 popen() 来完成。但是,由于在多线程程序中 fork 被认为是不好的做法,是否可以通过生成线程来实现相同的目的?
最佳答案
这是一个关于多线程和 fork+exec 潜在问题的有用总结:http://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them
看来如果要执行其他程序,甚至是shell脚本,都得用fork+exec,这是免不了的。请小心并为诸如 fork 之类的“坏”事件准备线程。如果这是问题所在,您还可以在从主应用程序运行的特殊单线程可信执行助手中关闭所有不必要的文件描述符。
关于c++ - 使用线程c++执行shell命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27264909/