[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] rework daemonizing logic in qemu-nbd
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH] rework daemonizing logic in qemu-nbd |
Date: |
Sun, 15 Jan 2012 11:42:36 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111222 Thunderbird/9.0 |
On 01/14/2012 01:39 PM, Michael Tokarev wrote:
if (pid == 0) {
- close(stderr_fd[0]);
- ret = qemu_daemon(0, 0);
-
- /* Temporarily redirect stderr to the parent's pipe... */
- dup2(stderr_fd[1], STDERR_FILENO);
- if (ret == -1) {
+ int nullfd = open("/dev/null", O_RDWR);
+ if (nullfd< 0 || setsid()< 0) {
err(EXIT_FAILURE, "Failed to daemonize");
}
This is forking only once.
-
- /* ... close the descriptor we inherited and go on. */
- close(stderr_fd[1]);
- } else {
- bool errors = false;
- char *buf;
-
- /* In the parent. Print error messages from the child until
- * it closes the pipe.
+ /* redirect stdin from /dev/null,
+ * stdout (temporarily) to the pipe to parent,
This is a bit of a hack.
+ /* now complete the daemonizing procedure.
+ */
+ if (device && !verbose) {
+ if (chdir("/") < 0) {
+ err(EXIT_FAILURE, "unable to chdir to /");
+ }
+ /* this redirects stderr to /dev/null */
+ dup2(STDIN_FILENO, STDERR_FILENO);
+ /* this redirects stdout to /dev/null too, and closes parent pipe */
+ dup2(STDIN_FILENO, STDOUT_FILENO);
+ }
+
Half of this is already done in client_thread, and that would be the
place where you should add dup2(0, 1). Also, the chdir can be moved
earlier, after bdrv_open.
Paolo
- [Qemu-devel] [PATCH] rework daemonizing logic in qemu-nbd, Michael Tokarev, 2012/01/14
- Re: [Qemu-devel] [PATCH] rework daemonizing logic in qemu-nbd,
Paolo Bonzini <=
- Re: [Qemu-devel] [PATCH] rework daemonizing logic in qemu-nbd, Michael Tokarev, 2012/01/15
- Re: [Qemu-devel] [PATCH] rework daemonizing logic in qemu-nbd, Paolo Bonzini, 2012/01/15
- Re: [Qemu-devel] [PATCH] rework daemonizing logic in qemu-nbd, Michael Tokarev, 2012/01/15
- Re: [Qemu-devel] [PATCH] rework daemonizing logic in qemu-nbd, Paolo Bonzini, 2012/01/15
- Re: [Qemu-devel] [PATCH] rework daemonizing logic in qemu-nbd, Paolo Bonzini, 2012/01/15
- Re: [Qemu-devel] [PATCH] rework daemonizing logic in qemu-nbd, Michael Tokarev, 2012/01/16
- Re: [Qemu-devel] [PATCH] rework daemonizing logic in qemu-nbd, Paolo Bonzini, 2012/01/16