Date: Thu, 8 Sep 2005 12:40:20 -0700 (PDT) From: erkan kolemen <erkankolemen@yahoo.com> To: freebsd-hackers@freebsd.org Subject: fok() execve() -> No child processes Message-ID: <20050908194020.21635.qmail@web33415.mail.mud.yahoo.com>
next in thread | raw e-mail | index | archive | help
Following code fails. I debugged it and saw that: it produces "No child processes" error while wait(). is it possible, parent still is not start to wait but child finished. After that CPU schedules parents. It try to start wait but child has finished. is it possible... What can i do for that? static int e_x_e_c(char *cmd[]) { pid_t pid; int stat; switch((pid = vfork())) { case -1: syslog(LOG_ERR, "fork: %s", strerror(errno)); return -16; break; case 0: if(execve(cmd[0], cmd, NULL) == -1) { syslog(LOG_ERR, "execve: %s", strerror(errno)); return -15; } break; default: if (wait(&stat) == -1) { slog(1, LOG_ERR); return -14; } if (WIFSIGNALED(stat)) { syslog(LOG_NOTICE, "%s is signalled", cmdline[0]); return -13; } if (WIFSTOPPED(stat)) { syslog(LOG_NOTICE, "%s is stopped", cmdline[0]); return -12; } if (WIFEXITED(stat)) return WEXITSTATUS(stat); break; } return -11; } ______________________________________________________ Click here to donate to the Hurricane Katrina relief effort. http://store.yahoo.com/redcross-donate3/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050908194020.21635.qmail>