解析进程参数
来源:互联网 发布:域账号取消挂载网络盘 编辑:程序博客网 时间:2024/06/01 09:28
在启动一个进程前,有时会给进程传一些参数,如./main 3,ps -aux等。在控制终端传参数很简单,只要输一串字符串,操作系统会给我们分解参数。现在在代码中,我们有时也会有这样的需求,用exec启动一个进程,有时会传参数给进程。我不知道有没有这样的库函数实现了这种功能,所以就自己写了一个。
#include <stdio.h>char **parse_argument(const char *args);void release_argv(char **argv);int main(){char *argument = "search -2 a.txt b.txt &";char **argv;int i = 0;argv = parse_argument(argument);while(argv[i]) {printf("%s\n",argv[i]);i++;}release_argv(argv);return 0;}/* 功能:将传给进程的整个字符串参数分解为char*型指针数组参数 * 参数:传给进程的整个字符串参数 * 返回:成功为指针数组的首地址,失败为NULL */char **parse_argument(const char *args){char **argv;const char *tiny, *temp;int size, blocks, i;argv = NULL;temp = NULL;size = i = 0;tiny = args;blocks = 0;while(*tiny != '\0') {//统计参数个数while(*tiny == ' ')//跳过开头空格tiny++;if (*tiny != '\0') {blocks++;//参数个数计数while(*tiny != ' ' && *tiny != '\0')tiny++;}}tiny = args;//分配block+1个字符串指针,最后一个存(char *)NULLif ((argv = (char **)calloc(blocks+1, sizeof(char *))) == NULL)return NULL;for (i = 0; i < blocks; i++) {while(*tiny == ' ')//跳过开头空格tiny++;if (*tiny != '\0') {size = 0;//每个参数占用的内存大小temp = tiny;while(*tiny != ' ' && *tiny != '\0') {tiny++;size++;}argv[i] = (char *)malloc(sizeof(char)*(size+1));if (argv[i] != NULL) {memset(argv[i], 0, size+1);memcpy(argv[i], temp, size);}else//分配内存失败return NULL;}}argv[blocks] = (char *)NULL;return argv;}void release_argv(char **argv){int i = 0;while(argv[i]) {free(argv[i]);i++;}free(argv);}
结果:
search
-2
a.txt
b.txt
&
-------------------------------
- 解析进程参数
- systemd 进程服务文件参数解析
- 进程参数
- 进程解析
- 参数解析
- 参数解析
- Linux 通过信号机制在进程间传递参数中的几个主要函数解析
- 嵌入式 Linux 通过信号机制在进程间传递参数中的几个主要函数解析
- linux进程解析--进程切换
- Linux源码解析-进程-进程
- 获取进程命令行参数
- 启动进程参数注意
- 读懂进程相关参数
- 查看进程命令行参数
- OGG进程参数事例
- 查看进程启动参数
- 查看进程启动参数
- 进程参数和环境变量
- Android中OpenGL ES贴图无法显示问题的可能原因
- Linux 恢复已经删除的文件/文件夹
- ELF文件格式
- android.opengl.GLSurfaceView
- 开始学习andEngine(4)--触摸移动精灵
- 解析进程参数
- Memcached Java客户端编程
- Microsoft Expression Blend 4 密钥
- 从socket中读取数据时使用超时 阅读次数5628
- 异常谜题之关闭流
- apache2.2 + mod_jk + tomcat6 实现apache代理tomcat
- usleep的--系统调用流程--及不准确的问题 - Android4.0.1
- code.google.com无法访问
- CSC命令