shell程序

编写自己的shell程序主要就是程序替换,使用了进程等待、进程终止、进程创建等进程控制的方法

#include <stdio.h>                                                                                                                                                                      
  2 #include <unistd.h>
  3 #include <stdlib.h>
  4 #include <string.h>
  5 #include <sys/wait.h>
  6 #include <ctype.h>
  7 
  8 int main()
  9 {
 10     while(1)
 11     {
 12         printf("[username@localhost]$ ");
 13         fflush(stdout);
 14         char cmd_buf[1024] = { 0 };
 15         fgets(cmd_buf,1023,stdin);//从标准输入读取信息
 16         cmd_buf[strlen(cmd_buf) - 1] = '\0';
 17         printf("cmd:[%s]\n",cmd_buf);
 18 
 19         char * argv[32] = {NULL};
 20         int argc = 0;
 21         char *ptr = cmd_buf;
 22         while(*ptr != '\0')
 23         {
 24             if(!isspace(*ptr))
 25             {
 26                 argv[argc] = ptr;
 27                 argc++;
 28                 while(!isspace(*ptr) && *ptr != '\0') ptr++;
 29                 *ptr = '\0';
 30             }
 31             ptr++;
 32         }
 33         argv[argc] = NULL;
 34         int i;
  			for(i = 0;i < argc;i++)
 36         {
 37             printf("argv[%d] = %s\n",argc,argv[argc]);
 38         }
 39     //第二步
 40     pid_t pid = fork();
 41     if(pid < 0)
 42     {
 43         continue;
 44     }
 45     else if(pid == 0)
 46     {
 47         execvp(argv[0],argv);
 48         //若程序替换失败,因子父进程的一致,则会出现两个shell,因此使用exit终止该进程。
 49         exit(0);
 50     }//第三步
 51     wait(NULL);//第四步
 52 
 53     return 0;
 54 
 55     }
 56 }                       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值