Всем привет.
Написал следующий демон, он не работает. Предполагаю это из-за закрытия потоков ввода/вывода, но до конца не понимаю, что нужно исправить, чтобы заработало.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
int main(int argc, char* argv[])
{
int fd;
pid_t process_id = 0;
pid_t sid = 0;
process_id = fork();
if (process_id < 0)
{
printf("fork failed!\n");
exit(1);
}
if (process_id > 0)
{
printf("process_id of child process %d \n", process_id);
exit(0);
}
umask(0);
sid = setsid();
if(sid < 0)
{
exit(1);
}
chdir("/");
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
while(1) {
fd = open("/dev/mydev", O_RDONLY);
read(fd, &buf, 7);
close(fd);
}
return EXIT_SUCCESS;
}
Спасибо.