mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
util: virdaemon: fix waiting for child processes
Unlike `waitpid`, `virProcessWait` only returns -1 (error) or 0 (success), so comparing that to `pid` will always be false and the parent will report failure with: error : main:851 : Failed to fork as daemon: No such file or directory even though the grandchild process is succesfully running. Note that the errno message is misleading: it was last set when trying to find a restart state file. Signed-off-by: Rafael Fonseca <r4f4rfs@gmail.com> Reported-by: Marcin Krol <hawk@tld-linux.org> Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
4df7280bd5
commit
a87e4788d2
@ -97,15 +97,14 @@ virDaemonForkIntoBackground(const char *argv0)
|
||||
default:
|
||||
{
|
||||
/* parent */
|
||||
int got, exitstatus = 0;
|
||||
int exitstatus = 0;
|
||||
int ret;
|
||||
char status;
|
||||
|
||||
VIR_FORCE_CLOSE(statuspipe[1]);
|
||||
|
||||
/* We wait to make sure the first child forked successfully */
|
||||
if ((got = virProcessWait(pid, &exitstatus, 0)) < 0 ||
|
||||
got != pid ||
|
||||
if (virProcessWait(pid, &exitstatus, 0) < 0 ||
|
||||
exitstatus != 0) {
|
||||
goto error;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user