读书人

初学者关于fork、wait、exec族函数的综

发布时间: 2012-03-15 11:50:38 作者: rapoo

菜鸟求助关于fork、wait、exec族函数的综合问题
在linux系统下用fork()、wait()、exec族函数做一个程序
要求:以%号为提示符,在%输入任意linux系统指令如“ls -l”后执行,执行结束后返回提示符%,继续等待输入指令
我们老师给的提示是死循环,但是我想不明白到底该怎么做……求解惑

[解决办法]

C/C++ code
#include <unistd.h>#include <sys/wait.h>#include <stdlib.h>#include <string.h>#define MAXLINE 4096int main(int argc, char* argv[]){    char  str[MAXLINE];    pid_t pid;        while(1)    {        putchar('%');        gets(str);                if (str == NULL)            return (1);                if (strcmp(str, "q") == 0 || strcmp(str, "Q") == 0)            break;        if ((pid = fork()) < 0)        {            perror("fork error");        }        else if (pid == 0)        {            if (execl("/bin/sh", "sh", "-c", str, (char *)0) < 0)            {                 perror("execl error");                continue ;            }        }        else  {            if(waitpid(pid, 0, 0) < 0)            {                perror("waitpid error");                return 1;            }        }    }    return 0;}
[解决办法]
探讨

这不是作业,是我们的一道思考题,主要是我的循环那里出了些问题

读书人网 >UNIXLINUX

热点推荐