Здравствуйте, Аноним, Вы писали:
А>Есть такая проблема. Если программу запускает xinetd-демон, то весь вывод, например, fprintf(stderr, "error")/fprintf(stdout, "message"), пишется в канал соединения и отправляется клиенту. Естественно, что если клиент не ожидает ничего такого, то отваливается. Как правильно избежать такого вывода клиенту? Сервер имеет возможность подключения плагинов, поэтому простое исключение подобных вещей из кода не решит проблему
.
Можно сделать, чтобы stderr/stdout указывали на /dev/null
int handle = open("/dev/null", O_RDWR);
dup2(handle, fileno(stdout);
dup2(handle, fileno(stderr);
printf("test1\n");
fprintf(stdout, "test2\n");
fprintf(stderr, "test3\n");
При завершении работы сервера закрыть close(habdle);