zoukankan      html  css  js  c++  java
  • apue 20130325

    多进程阶段练习

    1 myshell#ls

    2 myshell#ls -l

    3 myshell#ls -l -a /dev

    4 myshell# ls    -l   空格或\t

    5 myshell#    ls   -l        错误处理

    6 myshell #    cd    /tmp   内部命令   exit

    7 myshell#ls      -l  >   a.c

    8myshell#ls   -l   |   grep   A   

                 输出管道   输入

     

     

    Shell   人机交互的工具   放到指针数组里     shell   接受命令     ->    解析

    执行不会结束     while   死循环

    接受指令        执行结果        char   buf[1024];

    While (1){

    Printf ("myshell#");

    Gets(buf);     gets()可以有空格

    Printf ("%s\n",buf);     #ls 回车没有空格

    }   

     

    Execlp(buf,buf,NULL);

     

    Fork();创建子进程       两个进程执行不同的功能

    Wait()   等待进程清理     简单的协调工作

    int main()

    {

    Pid =  fork();

    If (pid>0){

    Wait(NULL);

    父进程

    }

    If (pid==0)

    {

    子进程

    }

    If (pid <0)

    {

    创建进程出错

    }

    }

     

    清理工作   shell  回收    子进程结束有信号

    Init

     

    创建子进程做什么?

    1,自已实现的功能     myls   自己写

    2,执行现有的命令     ls   系统

     

    Exec  成功从   ls main  函数执行    代码替换

    While(1)

    {

    Printf ("hello world\n");

    Execlp("ls","ls",NULL);

    Printf ("HELLO WORLD\n");

    }

     

    成功大写的打印不出来

    现有的命令替换当前进程

    Ls   程序

    Exec  重新加载ls 代码

    执行别人写的命令

    Exec:

    Execl()   

    Execv

    Execvp

    Execle

    Execve

    1, execl()

       1,命令的路径   which  ls

         "/bin/ls"        字符串

    2 "ls"   名称   

    3 "-l"  "-a"  参数

    4 NULL  结束标志空指针

    Execl("/bin/ls","ls","-l",NULL)

    列出参数

     

    2  char *cmd[]={"ls","-l","-a",NULL}

       Execv()

       1 在那   which  ls

       2 指针数组    cmd   区别   execl

       "/bin/ls"

    3  execlp  ("/bin/ls","ls","-l","-a",NULL);

       PATH:记录路径    有查找过程

     Echo  $PATH   shell 也会查找

    少了自己查找   cp  a.out   /bin.

    4 execvp()  

          Char *cmd[]={};

      Execvp("ls",cmd);   cmd[0]

     

  • 相关阅读:
    JAVA多线程之AQS
    LRU算法
    JAVA设计之SPI
    JAVA多线程之CAS
    操作系统之中断处理
    计算机领域思想
    操作系统之I/O
    操作系统之虚拟内存
    Mysql事务原理
    Mysql添加索引
  • 原文地址:https://www.cnblogs.com/wangjingyuwhy/p/2981553.html
Copyright © 2011-2022 走看看