Если взглянуть на картинку выше, то в этом списке ты не найдёшь сигналов с номерами 32 и 33. Список сформирован командой kill -l.

И куда же, блядь, эти сигналы делись?

А всё просто: сигналы с номерами 32 и 33 в современных Linux-дистрибутивах зарезервированы для использования библиотекой glibc. И используются для реализации механизма потоков (threads).

Исходник glibc, где он резервирует эти сигналы. Можешь увидеть, что они будут необязательно 32 и 33.

static int current_rtmin = __SIGRTMIN + 2;
static int current_rtmax = __SIGRTMAX;

Один из сигналов может быть использован для внутренних коммуникаций между потоками. Второй может служить для управления потоками на уровне ядра.

Сигналы же, начинающиеся с номера 34, называются сигналами реального времени. Более подробно про сигналы реального времени можешь почитать тут.

Если попытаться отправить сигнал 32 или 33 вручную процессу, то получишь хуй с маслом. Ядро эти сигналы обрабатывать не будет.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Потому что даже ядро не имеет к этим сигналам никакого отношения. А вмешиваться в потоки glibc тебе никто не даст, чтобы ты письку себе случайно не оторвал.
kill -32 10929

Unknown signal 32

Чтобы убедиться, что сигналы 32 и 33 не являются сигналами реального времени, можно написать такой тест:

#include <stdio.h>
#include <signal.h>

int main() {
    printf("SIGRTMIN: %d\n", SIGRTMIN);
    printf("SIGRTMAX: %d\n", SIGRTMAX);
    return 0;
}

Скомпилировать и запустить:

gcc -o signals signals.c
./signals

В ответ ты получишь что-то подобное:

SIGRTMIN: 34
SIGRTMAX: 64

Test Passed! Сигналы реального времени начинаются с 34. Но опять же не факт, что в твоём дистрибутиве будет так же. Мож, ты всё ещё на Slackware сидишь.

А нахуя нужны сигналы реального времени?

Давай лучше завтра, сегодня мы разбирались, куда делись сигналы 32 и 33. Не хочу раздувать этот пост и пугать тебя раньше времени СИськастым кодом.

Увидимся!

Про сигналы писал ранее тут, тут и тут.