首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >sigemptyset()覆盖下一个变量

sigemptyset()覆盖下一个变量
EN

Stack Overflow用户
提问于 2012-01-20 12:03:12
回答 2查看 498关注 0票数 0

我有全局变量

代码语言:javascript
代码运行次数:0
运行
复制
int a[10];
struct sigaction act;
int b[10];

每当我打电话的时候

代码语言:javascript
代码运行次数:0
运行
复制
sigemptyset(&act.sa_mask); 

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

代码语言:javascript
代码运行次数:0
运行
复制
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

我的完整代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
#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 选项编译会导致这个问题。

EN

回答 2

Stack Overflow用户

发布于 2012-01-20 12:12:31

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

可以在a数组之前声明siginfo吗?你能展示一下这个功能是干什么的吗?

票数 0
EN

Stack Overflow用户

发布于 2012-01-23 11:27:22

我找到了我没有链接到-muclibc选项的答案

代码语言:javascript
代码运行次数:0
运行
复制
mips-linux-gnu-gcc -G 0 -msoft-float -static -muclibc -o signal  signal.o

会解决这个问题

因此,在编译时,它是使用uclibc中的sigset.h,在执行时是从libc(signal.c sigemptyset())执行代码。

如果进一步分析mips的_SIGSET_NWORDS是4,而对于x86是32,那么sigemptyset()运行32次迭代而不是4次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8941156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档