使用sigaltstack结构不知道存储大小

时间:2013-04-09 03:59:36

标签: c linux unix struct

我正在使用sigalstack结构,详情请参阅:

Here (MAC OSX)

HERE (LINUX)

我只是声明它是这样的

struct sigaltstack aa;

我不断收到以下错误

error: storage size of ‘aa’ isn’t known

我阅读并检查storage size of ‘names’ isn’t known,但我只是声明它,所以它并不真正适用。

2 个答案:

答案 0 :(得分:1)

你不能像这样使用未初始化的备用堆栈。您必须在其ss_sp字段中为堆栈分配空间,并在其ss_size字段中设置相应的大小。

您链接的man7链接有更多相关信息。实际上,它在页面底部提供了一个示例:

stack_t ss;

ss.ss_sp = malloc(SIGSTKSZ);
if (ss.ss_sp == NULL)
    /* Handle error */;
ss.ss_size = SIGSTKSZ;
ss.ss_flags = 0;
if (sigaltstack(&ss, NULL) == -1)
    /* Handle error */;

希望有所帮助。

答案 1 :(得分:1)

您链接到的Mac OS页面(在“遗产概要”部分中):

  

兼容性

     

使用(过时的)sigaltstack结构将导致编译器诊断。使用stack_t中定义的<signal.h>

这表明您不应该尝试使用struct sigaltstack。该页面还显示了您希望如何在Mac OS上执行此操作。 Linux页面还显示了您应该如何使用stack_t类型,并且根本没有提及struct sigaltstack