From e8b7285da685866a373b1112115e6dc543991ca9 Mon Sep 17 00:00:00 2001 From: "SND\\weimingzhi_cp" Date: Tue, 23 Oct 2012 08:55:40 +0000 Subject: Do not leave zombie process when running configure utilities. git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@80664 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- plugins/dfcdrom/cdr.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'plugins/dfcdrom') diff --git a/plugins/dfcdrom/cdr.c b/plugins/dfcdrom/cdr.c index ab61886e..3456b42d 100644 --- a/plugins/dfcdrom/cdr.c +++ b/plugins/dfcdrom/cdr.c @@ -474,18 +474,28 @@ void ExecCfg(char *arg) { strcpy(cfg, "./cfgDFCdrom"); if (stat(cfg, &buf) != -1) { - if (fork() == 0) { - execl(cfg, "cfgDFCdrom", arg, NULL); + int pid = fork(); + if (pid == 0) { + if (fork() == 0) { + execl(cfg, "cfgDFCdrom", arg, NULL); + } exit(0); + } else if (pid > 0) { + waitpid(pid, NULL, 0); } return; } - strcpy(cfg, "./cfg/DFCdrom"); + strcpy(cfg, "./cfg/cfgDFCdrom"); if (stat(cfg, &buf) != -1) { - if (fork() == 0) { - execl(cfg, "cfgDFCdrom", arg, NULL); + int pid = fork(); + if (pid == 0) { + if (fork() == 0) { + execl(cfg, "cfgDFCdrom", arg, NULL); + } exit(0); + } else if (pid > 0) { + waitpid(pid, NULL, 0); } return; } -- cgit v1.2.3