如何叉,在平台无关的方式等待和杀死进程?

问题描述 投票:0回答:1

我有一个使用qazxsw POI + qazxsw POI,qazxsw POI(或qazxsw POI)和fork()一些C代码 - 并假定包括相关POSIX标头之后它们的存在。

现在,我想使这个代码,多平台地 - 以最小的变化。因此,没有引入第三方库的依赖,并没有实现对系统的这些设施没有他们。然而,我去不仅仅是Linux,Windows和Mac OS中是很重要的。我这样做工具,所以是CMake的,这与该代码项目使用;和C预处理器。也许胶水代码用C正确的一个点点位。

我的问题:我应该怎么检查,什么都要我把生成的包含文件,我应该如何修改我的代码调用这些功能,对POSIX和各种非POSIX平台相同的行为?

PS - 我知道很多平台没有Unix风格的信号。假设为了讨论我只是终止进程,不发送其他信号的缘故。

c cmake multiplatform waitpid process-management
1个回答
2
投票

Windows

那么exec()(创建新进程)和wait()(运行在这个过程中一个新的程序)不能在Windows,简单明了的存在。相反,你必须waitpid()它结合了两个。

然后,可以使用kill(),好了,终止一个进程。

然后,您可以实现两个独立的fork()文件:一个用于Windows,一个用于具有exec() / CreateProcess系统。

POSIX

如果你只关心整个POSIX环境(Linux操作系统,BSD,Mac OS)中的便携性,那么TerminateProcess肯定是要走的路。它处理的子进程的错误处理所有复杂。

参见:.c

Cross-platform Libraries

有一些是解决这一问题为你跨平台的框架:

他们当然解决了许多其他的可移植性问题也,所以最好要真正做到“买入”,并使用了框架,你这样做,与系统交互的一切。

© www.soinside.com 2019 - 2024. All rights reserved.