我最近在CLI中添加了一项新功能,基于捕获“Ctrl + C”信号。
令我高兴的是,我发现<signal.h>
is part of standard C,因此应该可以在任何符合C标准的环境中使用。
进入中断时的第一个操作是禁用所述中断,以避免堆叠多个相同的中断。
这可以通过以下方式轻松完成:
signal(SIGINT, SIG_IGN);
不幸的是,对于Visual Studio 2008,它会生成以下警告:
警告C4306:'type cast':从'int'转换为'void(__ cdecl *)(int)'更大的尺寸
虽然它没有明确命名受影响的参数,但它似乎是定位SIG_IGN
,其类型应为void (__cdecl *)(int)
。
SIG_IGN
由<signal.h>
提供,因此它应该可以直接使用,不会出现任何演员问题。
问题是:
<signal.h>
buggy?(注意:我本地没有Visual Studio,因此我必须在发货前“猜测”行为。我正在接收远程运行的测试报告,但需要一些时间才能到达。)