В Linux существует системный вызов signal
(см. Список системных вызовов Linux, данных Джимом).Вы никогда не перехватываете системный вызов напрямую, вы всегда вызываете функцию обертывания (по крайней мере, вы редко генерируете перехват непосредственно).Как указано в руководстве, signal()
- это просто оболочка для системного вызова, которая может не совпадать с signal
(пример приведен для truncate
в документе, цитируемом @Jim).Функция signal()
находится в libc, и эта библиотека может свободно реализовывать эту функцию так, как ей хочется, при условии сохранения семантики.Так как вы упомянули, что вызов signal()
может при определенных обстоятельствах перехватить системный вызов signal
или системный вызов sigaction
или любой другой подходящий.