使用线程 c++ 执行 shell 命令

Execute shell command using threads c++

本文关键字:shell 命令 执行 c++ 线程      更新时间:2023-10-16

是否有可能通过创建线程来执行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 这样的"坏"事件准备你的线程。此外,如果这是问题所在,您还可以在从主应用程序运行的特殊单线程受信任执行帮助程序中关闭所有不必要的文件描述符。