嘿,伙计们,我在摆弄信号,有一个奇怪的错误:我想给成员sa_sigaction设置一个值,但是IDE和编译器似乎找不到它。
#define _POSIX_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <signal.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/wait.h>
#include <bits/siginfo.h>
struct sigaction new_action;
void SIGUSR1_handler(int sig, siginfo_t *siginfo, void *context) {
......
}
memset(&new_action, '\0', sizeof(new_action)); //cleaning the memory
new_action.sa_sigaction = SIGUSR1_handler; //setting the handler for the signal
new_action.sa_flags = SA_SIGINFO;我只发布了代码的相关部分。有人能帮我吗?
编辑:我如何将某些内容放入siginfo结构或上下文指针中?
发布于 2015-05-07 17:50:55
您没有指定操作系统,所以我无法确定,但我认为问题是,您无意中通过以下错误的特性测试宏用法请求了一个缺乏POSIX的旧版本:
#define _POSIX_SOURCE_POSIX_SOURCE宏本身是不受欢迎的;您应该使用_POSIX_C_SOURCE并将其定义为您想要的API版本。为了确保工作sigaction的可用性,您可能需要:
#define _POSIX_C_SOURCE 200809L因为它是(如果我没记错的话)标准的早期版本中的XSI扩展。或者,您可以使用:
#define _XOPEN_SOURCE 600 /* or 700 */因为在第6期中,您想要的功能可以作为XSI扩展。
https://stackoverflow.com/questions/30108195
复制相似问题