有没有跨平台的C++库可以调用/创建进程?

19

是否有跨平台库可用于创建进程(例如在Windows中使用createProcess Win32 API)。 适用于Linux / Windows / Mac?


1
不确定为什么需要整个库来完成这个。你的编译器不支持 #ifdef 吗? - Cody Gray
3
不想再处理Win32 API,之前已经做过一次,它很糟糕。 - user63898
有一个正在进行的提案,旨在将std::process添加到C++标准库中:http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1750r1.pdf - lanoxx
5个回答

14
  1. Boost.Process可以实现这个功能。
  2. PoCo(Foundation中的Processes命名空间)也可以实现。

这些库都不会对程序进行侵入式修改,也不包含UI框架。两者都支持静态链接,而且不会增加很大的代码大小开销。


1
你可以添加这个boost::process已经被审查并拒绝,因为它需要一些实现上的改变(但仍然可用)。这很重要,因为如果一个版本的boost::process被纳入boost(投票包含),它将不会有与当前实现相同的接口。 - Klaim
@user63898:就在那里说了:“进程命名空间,位于 Foundation 中的库。” 不幸的是,他们文档的框架设置使得难以以有用的方式直接链接到该页面。这里是一个尝试(链接),但请参见答案中的链接以获取完整参考。 - sehe
看起来似乎不是这样,但 boost::process 并非仅有头文件;它使用 boost::filesystem,需要预构建的库。 - jtbr

7
您可以使用Qt,它以跨平台的方式实现了许多操作系统工具,例如进程、线程、网络和GUI等。

是的,我喜欢它,但它对我来说太大了,无法包含。 - user63898

7

2

我可以使用以下命令运行记事本: std::system("notepad.exe"); 我相信在Linux上也应该可以工作。


0

wxWidgets 还包含一个跨平台的进程控制库,可以通过 wxProcess 类来生成子进程。如果需要跨平台线程处理,也可以使用 wxThread 类来实现。总体而言,wxWidgets 是一个不错的跨平台库,相当轻量级且使用起来非常直观。您可以在主网站上找到一些很棒的入门教程,向您展示如何启动应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接