diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2014-02-08 14:08:51 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-02-10 10:46:35 -0800 |
commit | de0957ce2e88b8ad639f1e4a7197eb556e114a1c (patch) | |
tree | 6596fe5a6874207530dfa0ad737ea066ca51c22e /setup.c | |
parent | 79fcbf7e703ca5805ebd46b2c7e09d0703f1c1ff (diff) | |
download | git-de0957ce2e88b8ad639f1e4a7197eb556e114a1c.tar.gz |
daemon: move daemonize() to libgit.a
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'setup.c')
-rw-r--r-- | setup.c | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -787,3 +787,27 @@ void sanitize_stdfds(void) if (fd > 2) close(fd); } + +int daemonize(void) +{ +#ifdef NO_POSIX_GOODIES + errno = ENOSYS; + return -1; +#else + switch (fork()) { + case 0: + break; + case -1: + die_errno("fork failed"); + default: + exit(0); + } + if (setsid() == -1) + die_errno("setsid failed"); + close(0); + close(1); + close(2); + sanitize_stdfds(); + return 0; +#endif +} |