Я пытаюсь реализовать простой сервер/клиент с обработчиком сигналов.sigset_t полезен в этом случае?
Моя единственная польза для сигналов будет sigaction (SIG ... & сиг, NULL), где:
sig.sa_sigaction = &closeSig;
sig.sa_flags = SA_SIGINFO;
void closeSig{
send(ds_sock,"close",1024,0);
close(ds_sock);
exit(1);
}
Если сервер (или клиент) получает "закрыть", он просто закрывает подключение.
В этой ситуации полезно использовать sigset_t и добавить в него все сигналы, которые я хочу обработать, а затем использовать sigaction как up, вместо этого используя только e sigaction?
Если это полезно, вы можете объяснить мне причину? У меня бета-программа, и на сервере она используется sigset, но она не на клиенте. Спасибо!
Редактировать: Я только что узнал, что сервер также использует sigprocmask с разблокировкой. Если я не хочу использовать его, и я хочу, чтобы все сигналы были разблокированы и что они немедленно запускают свой обработчик, мне не нужно использовать sigset, не так ли? Благодаря!
Извините, но я не могу опубликовать код. Если вы можете мне помочь, это хорошо, если вы не можете, спасибо в любом случае!
Ваш вызов send() не имеет смысла; он отправляет 1024 байта из 5-байтового массива. Надеюсь, что это всего лишь пример. – Myria
@Myria Да, это всего лишь пример, это 6 утра, и я все еще изучаю :( Редактировать: во всяком случае я не думаю, что это совершенно неправильно, я имею в виду, я посылаю больше байт, чем необходимо, но это не должно нарушать любая вещь, правильно? – testermaster
Считывание конца массива имеет неопределенные эффекты. Это может ничего не делать, это может привести к дампу ядра, или он может сделать что-то еще. –