Как закрыть трубу на Ctrl + C? - PullRequest
0 голосов
/ 30 октября 2011

Как я могу убедиться, что канал закрыт, когда моя программа C остановлена ​​SIGINT?

Ответы [ 2 ]

2 голосов
/ 30 октября 2011

Вы можете использовать для обработки сигналов для этого:

#include <signal.h>

void sigHandler(int sig) { 
  // Respond to the signal here.
}

int main(..) {
  signal(SIGINT, &sigHandler);
  ..
}
1 голос
/ 30 октября 2011
  • Если вы обрабатываете SIGINT, вы можете просто вызвать close (). Или вы можете оставить все как есть и оставить трубу открытой.
  • Если вы не обработаете сигнал, ваша программа исчезнет, ​​и ее сторона канала будет автоматически закрыта ОС. Другая сторона трубы получит EPIPE или повторный возврат в ноль или -1.
...