Always look out for number one.

Never stop fighting for the future!

linux操作系统内核实习(二)

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#define MAX_LINE 80

struct command_struct{
    int argc;
    char* name;
    char* argv[64];
};

void parse(char* line, char** argv)
{
    while (*line != '/0')
    {
        while (*line==' ' || *line=='/t' || *line=='/n')
         {
            if ('/n' == *line)
                break;
            *line++ = '/0';
         }
         if ('/n' == *line)
         {
            *line = '/0';
             break;
         }
         *argv++ = line;
         while (*line != '/0' && *line!=' ' && *line!='/t' && *line!='/n')
            line++;
    }
    *argv = '/0';
   
}
void execute(char** argv)
{
    pid_t pid;
    int status;
   
    if ((pid = fork()) < 0)
    {
    }else if (pid == 0)
    {
        if (execvp(*argv, argv) < 0)
        {
            printf("ERROR:execvp");
           exit(-1);
        }
    }else
    {
        while (wait(&status) != pid)
             ;
    }
}

int main(int argc, char* argv[])
{
    char cargv[241];      
    char* cp = cargv;
    int i = sizeof(cargv)/MAX_LINE;
    char* temp;
    struct command_struct cmd;
   
    while (1)
    {
        printf("%>");
 
        
        while (i-- && (temp=fgets(cargv, MAX_LINE, stdin)) )
        {         
    
            temp += strlen(cp);
            cp += MAX_LINE;
            if (temp < cp)
           {
            //*temp = '/0';
             break;
          }
        }
        parse(cargv, cmd.argv);
        if (strcmp(cmd.argv[0], "exit") == 0)
        exit(0);      
        execute(cmd.argv);
    }
}

Reference:http://www.csl.mtu.edu/cs4411/www/NOTES/process/fork/exec.html

阅读更多
个人分类: 技术文章
相关热词: linux操作
上一篇终于缓过来了
下一篇awk手册
想对作者说点什么? 我来说一句

Linux操作系统内核实习.pdf

2010年04月19日 4.69MB 下载

Linux操作系统内核实习

2009年01月05日 5.57MB 下载

LINUX操作系统内核实习

2010年02月25日 1.46MB 下载

LINUX操作系统内核实习.rar

2011年05月02日 1.43MB 下载

LINUX操作系统内核实习 PART1

2010年03月25日 89KB 下载

linux操作系统内核实习

2009年04月10日 5.57MB 下载

【YPP】Linux操作系统内核实习

2007年08月26日 5.56MB 下载

linux kernal

2013年02月17日 708KB 下载

没有更多推荐了,返回首页

关闭
关闭