---- 整理自狄泰软件唐佐林老师课程
查看所有文章链接:(更新中)Linux系统编程训练营 - 目录
文章目录
- 1. 问题
- 1.1 再论execve(...)
- 1.2 main函数(默认进程入口)
- 1.3 进程空间概要图
- 1.4 编程实验:进程参数剖析
- 1.4.1 进程空间实验
- 1.4.2 父子进程参数实验
- 1.5 Linux启动参数(命令行参数)规范
- 1.5.1 Linux启动参数(命令行参数)解析
- 1.5.2 Linux启动参数(命令行参数)编程
- 1.5.3 编程实验:进程参数编程
- 1.6 思考
1. 问题

1.1 再论execve(…)

1.2 main函数(默认进程入口)
int main(int argc, char* argv[])

1.3 进程空间概要图

1.4 编程实验:进程参数剖析
1.4.1 进程空间实验


1.4.2 父子进程参数实验



1.5 Linux启动参数(命令行参数)规范
- 由 选项、选项值、操作数 组成
- 选项由短横线( - )开始,选项名必须是单个字母或数字字符
- 选项可以有选项值,选项与选项值之间可用空格分隔( -o test 或者 -otest )
- 如果多个选项均无选项值,可合而为一( -a -b -c 或者 -abc )
- 既不是选项,也不能作为选项值的参数是操作数
- 第一次出现的双横线( – )用于结束所有选项,后续参数为操作数
1.5.1 Linux启动参数(命令行参数)解析
- 规则:if:s ==> -i -s -f+选项值
- 示例:

1.5.2 Linux启动参数(命令行参数)编程

-
getopt(…) 从argc和argv中获取下一个选项
- 选项 合法:返回值 为 选项字符,optarg 指向 选项值字符串

- 选项 不合法:返回字符“ ? ”,optopt 保存 当前选项字符(错误)
- 选项 合法但缺少选项值:返回“ : ”,optopt 保存 当前选项字符(错误)
-
默认情况下:getopt(…)对argv进行重排,所有操作数位于最后位置

-
optstring规则 的扩展定义
起始字符可以是 “ :,+,- 或省略 ”
- 省略:出现选项错误时,程序中通过“ : ”或“ ? ”进行处理并给出默认错误提示
- “ : ” :错误提示开关,程序中通过返回值“ : ”或“ ? ”进行处理(无默认错误提示)
- “ + ”:提前停止开关,遇见操作数时,返回 -1,认为选项处理完毕(后续都是操作数)
- “ - ” :不重排开关,遇见操作数时,返回 1,optarg指向操作数字符串
- 组合:“ +: ” or “ -: ”
1.5.3 编程实验:进程参数编程
- 规则:“ f:is ”


- 规则扩展:“ :f:is ”


- 规则扩展:“ +:f:is ”


- 规则扩展:“ -:f:is ”


1.6 思考