Annotation of researchv9/libc/stdio/system.c, revision 1.1

1.1     ! root        1: /* @(#)system.c        4.1 (Berkeley) 12/21/80 */
        !             2: #include       <signal.h>
        !             3: 
        !             4: system(s)
        !             5: char *s;
        !             6: {
        !             7:        int status, pid, w;
        !             8:        register int (*istat)(), (*qstat)();
        !             9: 
        !            10:        if((pid = fork()) == 0){
        !            11:                execl("/bin/sh", "sh", "-c", s, 0);
        !            12:                _exit(127);
        !            13:        } else if(pid < 0)
        !            14:                return(pid);
        !            15:        istat = signal(SIGINT, SIG_IGN);
        !            16:        qstat = signal(SIGQUIT, SIG_IGN);
        !            17:        while((w = wait(&status)) != pid && w != -1)
        !            18:                ;
        !            19:        if (w == -1)
        !            20:                status = -1;
        !            21:        signal(SIGINT, istat);
        !            22:        signal(SIGQUIT, qstat);
        !            23:        return(status);
        !            24: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.