C++ 中对外部命令的线程安全并发调用

2024-03-15

我一直在互联网上寻找一种方法,以线程安全的方式从我的 C++ 程序中并发调用外部程序。 据我了解,popen、system 和 fork 都不是线程安全的。 在我看来,这里缺少了一些东西,到目前为止我还没有找到。是否有可能没有办法从不同线程并发调用外部程序?因为在我看来,这将是多线程编码的第一个使用示例之一。 我使用的是linux(mandriva),我希望调用的外部程序可以同时在不同的shell中调用。 我对 C++ 并不陌生,但对多线程很陌生,因此我将非常感谢有关该主题的任何建议。 马塞洛


fork()只要您只执行异步信号安全操作(例如execve() and _exit())在子进程中并且只调用waitpid()使用明确的 pid 以避免从程序的另一部分“窃取”僵尸。 (请注意,您可能会想要违反前一个要求,但这往往是不可移植且脆弱的。pthread_atfork()界面基本上被设计破坏了。)

popen()也是线程安全的并且满足上述两个要求。

system()可能不是线程安全的,例如因为它操纵信号配置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中对外部命令的线程安全并发调用 的相关文章

随机推荐