这里了解一下对于一个后台程序是如何处理标准输入、标准输出、标准错误的。
vixie-cron-4.1
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
switch (fork()) { case -1: log_it("CRON",getpid(),"DEATH","can't fork"); exit(0); break; case 0: /* child process */ (void) setsid(); if ((fd = open(_PATH_DEVNULL, O_RDWR, 0)) >= 0) { (void) dup2(fd, STDIN); (void) dup2(fd, STDOUT); (void) dup2(fd, STDERR); if (fd != STDERR) (void) close(fd); } log_it("CRON",getpid(),"STARTUP",CRON_VERSION); break; default: /* parent process should just die */ _exit(0); } |
、