fok() execve() -> No child processes

erkan kolemen erkankolemen at yahoo.com
Thu Sep 8 12:40:21 PDT 2005


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/


More information about the freebsd-hackers mailing list