Это зависит от того, как процесс обрабатывает сигнал. Если он не обрабатывает его так, как того хочет процесс, произойдет действие по умолчанию для signal, некоторые сигналы могут быть перехвачены, а некоторые нет.
Я не уверен, но вам следует посмотреть на разницу между остановленным и спящим процессом, поскольку в руководстве по сигналам сказано:
Cont Default action is to continue the process if it is currently stopped.
Для спящего процесса это может быть команда fg
.
Если вы хотите записать в канал, только если есть какой-то процесс, который открыл его для чтения, вы можете открыть его для записи в неблокирующем -режиме.
С GNUdd
:
echo Hello | dd oflag=nonblock of=pipe status=none &&
echo message has been sent
И вы получите сообщение об ошибке для ENXIO (что-то вроде Нет такого устройства или адреса на английском языке ), если не было считывателя.
Обратите внимание, что это также приведет к сбою (с EWOULDBLOCK
/ EAGAIN
, Ресурс временно недоступен)если канал заполнен (если есть считыватель, но он в данный момент не читает и в него уже записано что-то типа 64KiB ).
Также обратите внимание, что не все сообщение может быть написано, если оно не помещается. Если вы удалите status=none
, вы увидите, сколько было написано.