В сокет ssize_t send(int __fd, const void* __buf, size_t __n, int __flags)
мы получили этот аргумент __flags
. Я использую флаг MSG_NOSIGNAL
через соединение. Есть ли способ достичь этой функции флага в write
? Поскольку я использую этот флаг во всем соединении, его можно установить, когда создается socket
. Не стесняйтесь упоминать, если есть способы достижения всех функций __flag
.
С++ socket send/recv vs write/read
Ответ 1
Нет. При записи в сокет с write
это то же самое, что и вызов send
с аргументом flags
, установленным в ноль.
В официальной ссылке POSIX
Если fildes ссылается на сокет, write() должен быть эквивалентен send() без установленных флагов.
Однако существует способ "установить" этот флаг постоянно, и это означает, что он игнорирует сигнал SIGPIPE
:
signal(SIGPIPE, SIG_IGN);