c - sigemptyset() 正在覆盖下一个变量

标签 c signals

我有全局变量

int a[10];
struct sigaction act;
int b[10];

每当我打电话

sigemptyset(&act.sa_mask); 

数组a 已损坏。我怀疑是不是编译器的问题。我正在使用 CodeSourcery mips-linux-gnu-gcc 版本 4.5.2。我使用编译

mips-linux-gnu-gcc -c -g -muclibc -pedantic -Wno-declaration-after-statement -std=gnu99 -G 0 -mips2 -msoft-float -mno-memcpy -fomit-frame-pointer -pipe -Wall -Wstrict-prototypes signal/signal.c

mips-linux-gnu-gcc -G 0 -msoft-float -static -o signal  signal.o

我的完整代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
int a[10];
struct sigaction act;
int b[10];


int main ();
int main ()
{
int i;
//initialize a and b
for(i = 0 ; i < 10;i++)
{
    a[i]=1;b[i]=1;
}

sigemptyset(&act.sa_mask);

//print
for(i = 0 ; i < 10;i++)
{
    printf("%d %d ",a[i],b[i]);
}

return 0;
}

我发现使用 -muclibc 选项进行编译会导致此问题。

最佳答案

您正在显示struct sigaction act a 数组之后,但在代码中您提到了 siginfo变量,而不是act

可以 siginfo在数组之前声明?你能展示一下这个函数在做什么吗?

关于c - sigemptyset() 正在覆盖下一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8941156/

相关文章:

c++ - 在 C 中允许重复的 const 限定符但在 C++ 中不允许?

c - 从 C 中的二进制文件调用函数 (main())

c - 在两个函数上下文的执行之间切换

c - 如何停止或跳转信号并转到主要?

linux - 信号到来时杀死 bash 脚本前景子项

python - 中断阻塞的 evdev 读取

三元运算符和类型转换的混淆

c - 在 C 中访问和输入元素到动态结构数组中

c++ - 当我们对一个int进行运算时,结果是不是暂存在一个int中呢?

qt - 通过 Qt 中的信号/槽设置传递类