linux system()函数实现,system()函数体;

int system(const char *cmdstring)
{ 
    pid_t pid; 
    int status; 
    if(cmdstring == NULL)
    { 
        return 1; 
    } 
    if((pid = fork()) < 0)
    { 
        status = -1; 
    } 
    else if(pid == 0) //子进程
    {
        execl("/bin/sh", "sh", "-c", cmdstring, (char *)0); 
        exit(127); //子进程正常执行则不会执行此语句 ,执行完上述语句后会直接返回。
    } 
    else //父进程

    { 
        while(waitpid(pid, &status, 0) < 0)//此处等待子进程执行完成。
        {
            if(errno != EINTR)
            { 
                status = -1; 
                break; 
            } 
        }
    } 
    return status; 
} 

 

你可能感兴趣的:(linuxc)