我试图捕捉一个信号,但是struct sigaction不是在中定义的。以前,这在Ubuntu上与gcc编译器一起工作。一些代码:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#define _POSIX_C_SOURCE 199309L
#include <signal.h>
//#include <stdlib.h>
HANDLE hCom;
HANDLE hEvent;
void diediedie(int sig) {
puts("Bye, brutal world!");
if (hEvent)
CloseHandle(hEvent);
if (hCom)
CloseHandle(hCom);
exit(1);
}
int catch_signal(int sig, void (*handler)(int)) {
struct sigaction action; // <- this struct
action.sa_handler = handler;
sigemptyset(&action.sa_mask);
action.sa_flags = 0;
return sigaction(sig, &action, NULL);
}
...some code here...我阅读了这个主题How do I use sigaction()? struct sigaction is not defined,并定义了_POSIX_C_SOURCE,但它没有帮助。我不明白我应该做什么,以及为什么代码不能工作。有人能为新手解释一下吗?
发布于 2022-07-10 10:53:02
对不起,我发现在Windows中我应该只使用void __cdecl *signal(int sig, int (*func)(int, int));
https://stackoverflow.com/questions/72927815
复制相似问题