Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1609285
  • 博文数量: 245
  • 博客积分: 10378
  • 博客等级: 上将
  • 技术积分: 2571
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 08:19
文章分类

全部博文(245)

文章存档

2013年(4)

2012年(8)

2011年(13)

2010年(68)

2009年(152)

分类: LINUX

2009-04-08 12:40:47

  我们通过检测特殊字符分割出命令后,还不能直接使用,首先需要分离出命令字符串中的命令和参数,
解析命令与参数只要通过检测空格就可以完成
 
 

char *token;  //p_tmp:为字符串名,即字符串首地址

token=strtok(p_tmp," ");
while(token!=NULL)
{
   memset(tmp,'\0',20);
   if( (*token!=' ')&&(*token!='\n')&&(*token!='\0') )
   strcpy(cmd_data.arg[id++],token);  //cmd_data为存储命令的结构体
   token=strtok(NULL," ");            //arg[]为结构体成员变量。
}

虽然分割比较简单,但需要注意一些额外符号,比如'\n' 、'\0'这些符号需要特别注意,往往会在切割出的字符串中多出'\n',如果直接execv,会出错,而错误不易发现。

通过上便的操作就可以将命令与参数存入cmd_data.agrv[]中。当然上述的简单的操作还不能满足要求,往往切割的效果不佳,会带入一些而外的符号,需要做一些处理。这都是细节。

 

阅读(2013) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~