- 论坛徽章:
- 0
|
本帖最后由 顽石菜 于 2010-02-23 15:14 编辑
各位,请帮忙看看为啥我在打印siginfo_t 里头的数据的时候程序崩溃了?貌似不让访问siginfo_t 啊.
代码如下
- #include <stdio.h>
- #include <signal.h>
- #define INPUTLEN 100
- main()
- {
- struct sigaction newhandler;
- sigset_t blocked;
- void intsignalaction(int s, siginfo_t * pinof, void * p);
- char x[INPUTLEN];
- char readback=0;
- /* load these two members first */
- newhandler.sa_flags = SA_RESETHAND | SA_RESTART | SA_SIGINFO;
- newhandler.sa_sigaction = intsignalaction;
- sigemptyset(&blocked);
- sigaddset(&blocked, SIGQUIT);
- newhandler.sa_mask = blocked;
- printf("newhandler.sa_flags=%x\n", newhandler.sa_flags);
- if(sigaction(SIGINT, &newhandler, NULL) == -1)
- perror("sigaction");
- else
- while(1){
- fgets(x, INPUTLEN, stdin);
- printf("main loop input: %s",x);
- }
- }
- void siginfo_t_dump(siginfo_t * pinof)
- {
- printf("si_signo = %d\n", pinof->si_signo);
- }
- void intsignalaction(int s, siginfo_t * pinof, void * p)
- {
- printf("intsignalaction Called with signal %d\n",s);
- siginfo_t_dump(pinof);
- sleep(2);
- printf("done handling signal %d\n",s);
- }
复制代码 在按了Ctrl_c以后,显示如下
main loop input:
intsignalaction Called with signal 2
Segmentation fault
请大家帮忙看看是怎么回事?貌似是死在siginfo_t_dump里头了 |
|