sigfillset не устанавливает сигнальные биты

У меня странная проблема! Мой код очень прост.

    #include<stdio.h>    
    #include<unistd.h>    
    #include<signal.h>      
    #include<stdlib.h>    
main()    
{    
  sigset_t signal ;    
  printf("Value of signal before sigfil is %x\n",signal) ;    
  sigemptyset(&signal);    
  printf("Value of signal after sigempty is %x\n",signal) ;    
  sigfillset(&signal) ;    
  printf("Value of signal after sigfil is %x\n",signal) ;    
} 

Но каждый раз, когда я компилирую и запускаю код, я получаю некоторые случайные значения.
Пример:

Value of signal before sigfil is bf77c638    
Value of signal after sigempty is 1a934000    
Value of signal after sigfil is 1a934000

Я пробовал это на Ubuntu 12.10 и Fedora. Я что-то здесь упускаю?

0
задан 25 February 2014 в 16:39

1 ответ

Определение sigset_t должно дать Вам ключ к разгадке, не простой интервал, это более сложно:

Примечание массив слов в __ val.

# define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
typedef struct
{
    unsigned long int __val[_SIGSET_NWORDS];
} __sigset_t;

Вы могли попробовать:

signal.__val[0];

Примечание, что необходимо ожидать мусор в начальной печати от стека.

, Конечно, Вы не должны смотреть в этой структуре во-первых, так как она, как предполагается, непрозрачна. Но это иногда полезно для отладки.

0
ответ дан 25 February 2014 в 16:39

Другие вопросы по тегам:

Похожие вопросы: