Re: Запуск программ с xinetd
От: mxest  
Дата: 18.07.08 11:02
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть такая проблема. Если программу запускает 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);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.