是否可以通过创建线程来执行 shell 命令,即不使用 popen/system 或任何 fork-exec 变体?为什么或者为什么不?
为了提供更多上下文,我正在运行一个多线程程序,其中一个线程需要执行 shell 脚本。目前它使用 popen() 来完成此操作。然而,由于多线程程序中的分叉被认为是不好的做法,是否可以通过生成线程来实现相同的目的?
以下是关于多线程和 fork+exec 潜在问题的有用总结:https://web.archive.org/web/20170812180443/http://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them
看来如果要执行其他程序甚至shell脚本就必须使用fork+exec,这是不可避免的。只是要小心,并为像 fork 这样的“坏”事件做好线程准备。此外,您还可以在从主应用程序运行的特殊单线程可信执行帮助程序中关闭所有不必要的文件描述符(如果这是问题)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)