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

标签 c++ multithreading shell

是否可以通过创建线程来执行 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/

相关文章:

python - 如何从 bash shell 提示符运行带有句子作为命令行参数的 python 程序

c++ - C++ 异常是如何实现的(使用 Setjump() 和 Longjump() ?)

c++ - 在C++中格式化字符串的输出

使用 Concurrent.Futures 模块作为 ThreadPool 调用 Python-get 函数的返回值

c# - 使用 C# 的线程池问题

linux - 将输入转换为字符串

macos - 如何在 Mac OS 上查找超过 42 个字符的文件名

c++ - 我可以在这个类中用嵌套类填充模板参数吗?

c++ - 如何返回指向链表中最大值的指针?

java - 什么类用于关键字 'synchronized' ?