Где SIGUNUSED точно определен в заголовочных файлах? - PullRequest
3 голосов
/ 09 ноября 2010

У меня есть код, который нужно скомпилировать для нескольких платформ. Следующее приведёт к компиляции кода, но я хочу знать, где символ SIGUNUSED фактически определен:

Рабочий код

#ifdef LINUX
#define SIGEMT SIGUNUSED
#endif

...

void set_sig_trap()
{
   signal( SIGHUP, Signal );       /* floating point exception            */
   signal( SIGINT , Signal );      /* Interrupt                           */
   signal( SIGQUIT, Signal );      /* quit                                */
   signal( SIGILL, Signal );       /* Illegal instruction                 */
   signal( SIGTRAP, Signal );      /* trace trap                          */
   signal( SIGABRT, Signal );      /* Process abort signal                */
   signal( SIGEMT, Signal );       /* EMT instruction                     */
   signal( SIGFPE, Signal );       /* Floating point exception            */
   signal( SIGBUS, Signal );       /* bus error                           */
   signal( SIGSEGV, Signal );      /* Segmentation violation              */
   signal( SIGSYS, Signal );       /* bad argument to system call         */
   signal( SIGPIPE, Signal );      /* write on a pipe - no one to read it */
   signal( SIGTERM, Signal );      /* Software termination sig. from kill */
   signal( SIGALRM, Signal );      /* alarm clock                         */
   return;
}

...

Я искал SIGUNUSED в / usr / include без хитов. Это не в signal.h. Откуда это?

Обновление:

Я не думал, что определение сигнала будет вне сигнала. H, поскольку ответ указывает, что рекурсивный поиск нашел определение:

me@mymachine.:/usr/include $ grep -d recurse SIGUNUSED *
asm/signal.h:#define    SIGUNUSED       31
asm-arm/signal.h:#define        SIGUNUSED       31
asm-ia64/signal.h:/* signal 31 is no longer "unused", but the SIGUNUSED macro remains for backwards compatibility */
asm-ia64/signal.h:#define       SIGUNUSED       31
asm-parisc/signal.h:#define     SIGUNUSED       31
asm-parisc/signal.h:#define SIGRESERVE  SIGUNUSED
asm-powerpc/signal.h:#define    SIGUNUSED       31
asm-s390/signal.h:#define SIGUNUSED       31
asm-x86/signal.h:#define        SIGUNUSED       31
bits/signum.h:#define SIGUNUSED 31

Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Я вижу, что оно определено в bits/signum.h, который входит в signal.h:

#define SIGUNUSED 31

Может быть, вы забыли рекурсивный grep?

1 голос
/ 22 июля 2018

(я отвечаю, поскольку этот вопрос занимает первое место в результатах поиска Google в отношении SIGUNUSED)

Поскольку glibc 2.26 SIGUNUSED был удален , и мы рекомендуем использовать *Вместо 1007 * (который имеет то же значение).

Для устаревшей совместимости используйте

#define SIGUNUSED SIGSYS

или просто

#define SIGUNUSED 31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...