shell外部命令解析器

来源:互联网 发布:苹果电脑软件如何更新 编辑:程序博客网 时间:2024/06/01 20:21

/* ************************************************************************
 *       Filename:  shell.c
 *    Description: 
 *        Version:  1.0
 *        Created:  2012年04月02日 18时52分12秒
 *       Revision:  none
 *       Compiler:  gcc
 *         Author:  YOUR NAME (),
 *        Company: 
 * ************************************************************************/

于2012年04月09日修改后的代码:

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/wait.h>

int main(int argc,char *argv[])
{
 while(1)
 {
  pid_t pid;
  char *p1=NULL,*p2=NULL,*p3=NULL;  //指针要初始化
  char *p4=NULL;
  char str[100]="";  //这里要初始化或者用memset函数初始化
  char *temp[100];
  int i=0;
  int status;
 
  p1=getenv("USER"); //取得环境变量内容getenv()
  p2=getenv("HOSTNAME");
  p3=getenv("PWD");
  p4=strrchr(p3,'/');
  printf("[%s@%s %s]$",p1,p2,p4+1);
//  gets(str);
/*可以代替下面的4句话
  fgets(str, sizeof(str), stdin);//获取字符串
  str[strlen(str)-1]='\0';   //把最后一位'\n'变成字符串结束标志'\0'
  if(str[0]=='\0')
   continue;    //如果是输入回车的话,继续while循环
  temp[i++]=strtok(str, " ");
  while((temp[i++]=strtok(NULL," "))!=NULL);   //字符串按空格切割      
*/
  fgets(str,100,stdin);  //str用指针时要开辟空间,100可以用strlen测出str的长度来代替
  temp[i++]=strtok(str," \n"); 
  while((temp[i++]=strtok(NULL," \n"))!=NULL)
  ;
  pid=vfork();
  if(pid<0)
  {
     perror("fork\n");
  }
  else if(pid==0)
  {    
     if(temp[0]==NULL)
     {
        exit(0);
     } 
        execvp(temp[0],temp);
  }
  else
  {
      pid=wait(&status);
  }
 
 }
 return 0;
}


 

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(880) | 评论(6) | 转发(1) |
0

上一篇:高中生为买iPad 2卖肾导致三级伤残

下一篇:TCP/UDP相关知识总汇

相关热门文章
  • 导入mysql文件提示“ASCII '\0...
  • 程序化广告交易中的点击率预估...
  • 欢迎ShellJiao在ChinaUnix博客...
  • IDC局域网IP检测脚本
  • 每天dmp备份的shell脚本...
  • linux 常见服务端口
  • xmanager 2.0 for linux配置
  • 【ROOTFS搭建】busybox的httpd...
  • openwrt中luci学习笔记
  • 什么是shell
给主人留下些什么吧!~~

qizheguang2012-06-18 08:48:25

hclen90615: 会有两个问题:1、strrchr参数2类型未转换。2、在无法识别的外部命令时应该打印错误提示。.....
谢谢提醒哈,

回复 | 举报

hclen906152012-06-17 07:13:50

会有两个问题:1、strrchr参数2类型未转换。2、在无法识别的外部命令时应该打印错误提示。

回复 | 举报

hclen906152012-06-17 07:06:46

正巧,前天也写了一个•••

回复 | 举报

qizheguang2012-04-10 07:58:34

☆彼岸★花开: 不太长啊…….....
它只是实现了shell脚本外部的一些简单的命令,这个好像不需要太长吧..

回复 | 举报

☆彼岸★花开2012-04-10 01:47:00

不太长啊……

回复 | 举报
  • 1
  • 2
  • 末页
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米手机电用完了充不进去怎么办 华为微信分身版本过低怎么办 手机连接不上4g网络怎么办办 手机通话时老返回锁屏怎么办 小米手机指纹解锁按键不灵了怎么办 小米手机4s黑屏开不了机怎么办 手机老年机突然黑屏开不了机怎么办 苹果7P遮挡传感器就黑屏怎么办 手机被偷支付宝的钱被偷怎么办 oppo手机微信视频黑屏了怎么办 小米账号锁死插卡不显示卡怎么办 红米手机充电时不黑屏怎么办 酷派手机开机出现系统错误怎么办 乐视1s手机开不了机怎么办 酷派手机的信息文件夹不见了怎么办 酷派手机开机卡在开机界面怎么办 魅蓝拨号键老是闪退怎么办 手机上浏览器搜索时字在右边怎么办 酷比魔方平板开不开机怎么办 红米手机摔了有一角黑屏了怎么办 红米手机刷机黑屏打不开怎么办 魅蓝x一打电话就黑屏怎么办 红米手机黑屏打不开怎么办充电发烫 小米手机打电话来是关机的怎么办 红米手机打电话自动灭屏怎么办 红米5s手机白屏怎么办 红米手机黑屏开不了机怎么办 红米note开机键不灵了怎么办 红米2忘记锁屏密码怎么办 红米1手机忘记锁屏密码怎么办 红米4x关不了机怎么办 红米4a手机屏幕黑屏打不开怎么办 红米手机为什么开不了机怎么办 红米note手机刷机失败怎么办 金立手机来电屏幕不亮怎么办 小米5s桌面相机图标不见了怎么办 小米手机锁屏密码忘了怎么办? 小米平板电脑锁屏密码忘了怎么办 小米手机进水了黑屏了嗡嗡响怎么办 华为诺娃2手机声音小怎么办 华为平板锁屏密码忘记了怎么办