gpt4 book ai didi

不能使用 sa_sigaction - "sigaction doens' t 有一个字段 sa_sigaction"

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:52 26 4
gpt4 key购买 nike

嘿伙计们,我正在处理信号,并且有一个奇怪的错误:我想为成员 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 结构或上下文指针中放置一些东西?

最佳答案

您没有指定您的操作系统,所以我不能确定,但​​我认为问题是您通过以下不正确的功能测试宏使用无意中请求了缺少它的旧版本的 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 扩展提供。

关于不能使用 sa_sigaction - "sigaction doens' t 有一个字段 sa_sigaction",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30108195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com