Всем привет. Подскажите как правильно реализовать перенаправление потока вывода для демона (создаем новый процесс и отвязывает от терминала. stdout бы в файл, м?)Кусок кода демонизации и перенаправления.
int pid = fork();
switch(pid)
{
case -1:
printf("fork error");
exit(-11);
break;
case 0:
setsid();
chdir("/");
int stdoutO;
stdoutO = dup(fileno(stdout));
close(0);
close(1);
close(2);
memset(&sa, 0, sizeof(sa));
sa.sa_handler = &wc_sighandler;
sigaction(SIGCHLD, &sa, 0);
/* - Redirectind stdout - */
//stdout = fopen(OutputFile,"w+");
stdout = freopen(OutputFile, "w+", stdout);
printf("..:[Demonization start. See log file: %s]:..\n", OutputFile);
...
printf("..:[Demonization stop. See log file: %s]:..\n", OutputFile);
/* - Free stdout - */
//fflush(stdout);
//fclose(stdout);
//stdout = fdopen(stdoutO,"w");
break;
default:
printf("..:[Demonization start... See log file: %s]:..\n", OutputFile);
//exit(0);
break;
}
Файл создается пустой. Причем есть эту хрень откомпилить и запустить под eclipse - все работает. Из консоли - нет