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

转载 2006年05月23日 21:38:00

#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

相关文章推荐

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

  • 2007年08月26日 19:53
  • 5.56MB
  • 下载

LINUX操作系统内核实习

  • 2010年02月25日 14:52
  • 1.46MB
  • 下载

深入分析 Linux操作系统的内核链表(二)

尽管这里使用2.6内核作为讲解的基础,但实际上 2.4 内核中的链表结构和 2.6 并没有什么区别。不同之处在于 2.6 扩充了两种链表数据结构:链表的读拷贝更新(rcu)和 HASH ...

Linux操作系统内核实习

  • 2008年08月24日 10:48
  • 9.89MB
  • 下载

Linux操作系统内核实习

  • 2009年01月05日 08:56
  • 5.57MB
  • 下载

Linux操作系统内核编译详解

转自:http://www.yesky.com/458/1853958.shtml 内核简介 内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统...

Linux操作系统内核实习

  • 2009年01月13日 11:06
  • 5.57MB
  • 下载

LINUX操作系统内核实习 PART1

  • 2010年03月25日 22:40
  • 89KB
  • 下载

Linux操作系统内核中工作队列的操作

本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。 msn: yfydz_no1@hotmail.com 来源:http...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux操作系统内核实习(二)
举报原因:
原因补充:

(最多只允许输入30个字)