mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
tools/ocaml: Dup2 /dev/null to stdin in daemonize()
Don't close stdin in daemonize() but dup2 /dev/null instead. Otherwise, fd 0 gets reused later: [root@idol ~]# ls -lav /proc/`pgrep xenstored`/fd total 0 dr-x------ 2 root root 0 Feb 28 11:02 . dr-xr-xr-x 9 root root 0 Feb 27 15:59 .. lrwx------ 1 root root 64 Feb 28 11:02 0 -> /dev/xen/evtchn l-wx------ 1 root root 64 Feb 28 11:02 1 -> /dev/null l-wx------ 1 root root 64 Feb 28 11:02 2 -> /dev/null lrwx------ 1 root root 64 Feb 28 11:02 3 -> /dev/xen/privcmd ... Signed-off-by: Christian Lindig <christian.lindig@citrix.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Wei Liu <wei.liu2@citrix.com> Release-acked-by: Juergen Gross <jgross@suse.com> (cherry picked from commit677e64dbe3) (cherry picked from commit4b72470175) (cherry picked from commit5cfbc0ffd5)
This commit is contained in:
1 parent
9b6f1c090a
commit
3db28b0bab
1 file changed
+2
-2
@@ -100,9 +100,9 @@ let daemonize () =
|
||||
|
||||
begin match Unix.fork () with
|
||||
| 0 ->
|
||||
let nullfd = Unix.openfile "/dev/null" [ Unix.O_WRONLY ] 0 in
|
||||
let nullfd = Unix.openfile "/dev/null" [ Unix.O_RDWR ] 0 in
|
||||
begin try
|
||||
Unix.close Unix.stdin;
|
||||
Unix.dup2 nullfd Unix.stdin;
|
||||
Unix.dup2 nullfd Unix.stdout;
|
||||
Unix.dup2 nullfd Unix.stderr;
|
||||
with exn -> Unix.close nullfd; raise exn
|
||||
|
||||