У меня странная проблема! Мой код очень прост.
#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. Я что-то здесь упускаю?
Определение 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];
Примечание, что необходимо ожидать мусор в начальной печати от стека.
, Конечно, Вы не должны смотреть в этой структуре во-первых, так как она, как предполагается, непрозрачна. Но это иногда полезно для отладки.