在 C++11 中,signal.h 头文件没有 kill 函数

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

我刚刚尝试编译我之前在 C++11 模式下使用 Gnu g++ 编写的代码,以查看代码是否需要尽快修改(出于同样的原因,我也计划在 C++17 模式下对其进行测试) .

我发现 kill() 函数导致了编译器错误,并且 kill 函数似乎不再存在于 signal.h 头文件中。

我只是看了 http://www.cplusplus.com/reference/csignal/ 作为参考,这似乎证实这不仅仅是 Gnu 特定的遗漏,而且似乎在标准中。

我在任何地方都找不到这种遗漏的理由,也找不到任何关于在没有它的情况下我应该如何管理流程的建议。谁能指出我正确的方向?

c++ c++11 g++ kill-process
2个回答
3
投票

C++标准函数是

raise
.

kill
是 POSIX 标准 required 的函数。

C++标准不需要这个函数,这意味着它在C++标准的范围之外。


-1
投票

好吧,我太快发布了这个问题,当然 fork/kill 等首先不是 C++ 标准的一部分,而是类 unix 平台上的常见添加。

我真正的问题是我使用了错误的编译器开关。对于遇到此问题的其他任何人,要获得严格的 C++11 标准,请使用:

g++ -std=c++11

但是要获得 C++11 标准和非标准扩展,请使用:

g++ -std=gnu++11

使用后者,我可以毫无问题地构建和调用 fork/kill。

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