当前位置:  技术问答>linux和unix

一道linux下C语言fork的题

    来源: 互联网  发布时间:2016-09-05

    本文导语:  初识linux,不太懂这道题,请高手写下过程供分析,最好有注释,不胜感激... linux下编写C程序:在屏幕上显示提示符(prompt),接受从键盘输入,将从键盘输入的命令转化成(生成)新的进程,并且执行(运行)的...

初识linux,不太懂这道题,请高手写下过程供分析,最好有注释,不胜感激...

linux下编写C程序:在屏幕上显示提示符(prompt),接受从键盘输入,将从键盘输入的命令转化成(生成)新的进程,并且执行(运行)的这么一个程序。simplesh

主要是达到这个效果:
$ ./simplesh
 PROMPT>
 PROMPT> date
 Wed May 27 0:30:10 JST 2009
 PROMPT> ls
 …
我也不是很明白此题的意思 


要点:
  1.根据下面所示,使用fork,在子进程使用exec系统调用,将子进程置换成输入的命令的进程
int pid;

if ((pid = fork()) == 0) {
 /* 子进程的处理*/
} else if (pid >= 1) {
 /* 父进程的处理*/
} else {
 /* 错误处理*/
}

   2.输入的命令行的check,也可利用getchar()

注:此题是翻译过来的,所以语言组织的可能不是很好,见谅

|

//这不自己写一个shell么……
#define MAX 100
int pid;
char command[MAX];
int state;
while(1)
{
    printf("PROMPT> ");
    scanf("%s",command);
    if ((pid = fork()) == 0) 
    {
        getopt(...);//处理参数,简单shell的话可以不要参数
         state = execvp(command,options);//这里也可以直接写一句system(command);不过不符合题意
    } 
    else
    { 
        if (pid >= 1)
        {
            wait(pid); //等子进程
        }
    } 
    else 
    {
        if(state == -1)
        {
             printf("command error!n"); 
        }
    }
}


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一道送分的问题
  • 一道考验基础的JAVA语法题
  • 问个AIX题库的一道题,感觉答案应该是A啊
  • 关于构造函数的一道题
  • 初中计算机老师给我们出过一道题,那时候印象很深
  • 一道基础英语填空题(Java)
  • 问一道SCJP的题目
  • SCJP 模拟题一道
  • scjp考题一道
  • scjp考题一道!!!!!!!!
  • 一道SCJP的题
  • 一道SCJP题有请各大虾指教.
  • 一道题,select what & why?
  • 一道关于操作系统的题
  • 问一道算法题
  • 一道习题
  • 一道小程序有问题?请教!
  • 一道scjp的题目
  • 一道scjp模拟题,请赐教。
  • 关于操作系统的一道题目(关于临时文件)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3