我们通过检测特殊字符分割出命令后,还不能直接使用,首先需要分离出命令字符串中的命令和参数,
解析命令与参数只要通过检测空格就可以完成
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[]中。当然上述的简单的操作还不能满足要求,往往切割的效果不佳,会带入一些而外的符号,需要做一些处理。这都是细节。
阅读(2061) | 评论(0) | 转发(0) |