Итак, я начинаю заниматься программированием на ОС / процессах и тому подобным, я новичок в этом, но я в основном понял, (моя книга об ОС для колледжа была бесполезна, поэтому мне пришлось просматривать всемирную паутину .... даЯ просто назвал это так)
В любом случае, вот мой скелет процесса демона ... Это в основном не мое, в основном это кусочки и кусочки, взятые при просмотре кода в книгах (верно?)
В любом случае у меня было несколько вопросов относительно идентификатора сеанса (что это такое? И чем он отличается от идентификатора процесса)
и 2, как мне вести запись файлов отладки?в разделе ниже?Потому что это не в цикле демона?мы бы просто вернули что-то вроде «Демон запущен: 11:59 утра» и т. д.?
3, почему именно мы меняем каталоги?и почему вы хотите, чтобы он был пользователем root .... Очевидно, я не программист x-pert linux, но все же ....
Думаю, я не понимаю, как это делает его демоном?Я понимаю, что вилки и родители / дети ..... но что делает этого демона?
#include <unistd.h>
#include <syslog.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <string.h>
int main(void) {
//Process and Session ID
pid_t pid, sid;
//Fork
pid = fork();
if (pid < 0) {
exit(EXIT_FAILURE);
}
//Huzzah
if (pid > 0) {
exit(EXIT_SUCCESS);
}
/* Change the file mode mask */
umask(0);
/* APPARENTLY I PLACE LOGFILES HERE? HOW? */
//Create new sid (i don't understand this
sid = setsid();
if (sid < 0) {
exit(EXIT_FAILURE);
}
//Change Directory, Why?
if ((chdir("/")) < 0) {
exit(EXIT_FAILURE);
}
/* Close out the standard file descriptors <---Why? just for protection */
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
/* Daemon-specific initialization goes here */
//Daemon Loop
while (1) {
//Do Task
}
exit(EXIT_SUCCESS);
}
edit: Забыл упомянуть, что это для Linux