Я прочитал на странице руководства, что при вызове exit()
все потоки автоматически очищаются и закрываются. Сначала я скептически относился к тому, как это было сделано и действительно ли это надежно, но, видя, что я больше не могу это выяснить, я смирюсь с тем, что это просто работает - посмотрим, что-нибудь взорвется. В любом случае, если это поведение закрытия потока присутствует в exit()
, такое поведение также присутствует в обработчике по умолчанию для SIGINT
(сигнал прерывания обычно запускается с помощью Ctrl + C)? Или нужно будет сделать что-то вроде этого:
#include <signal.h>
#include <stdlib.h>
void onInterrupt(int dummy) { exit(0); }
int main() {
signal(SIGINT, onInterrupt);
FILE *file = fopen("file", "a");
for (;;) { fprintf(file, "bleh"); } }
чтобы file
правильно закрылся? Или можно безопасно пропустить строки signal(SIG...
и void onInterrupt(...
?
Пожалуйста, ограничьте любые ответы C, C99 и POSIX, так как я не использую GNU libc. Спасибо.