---- 整理自狄泰软件唐佐林老师课程
查看所有文章链接:(更新中)Linux系统编程训练营 - 目录
文章目录
1. 问题
- execve(…)的参数是什么?有什么意义?
1.1 再论execve(…)
1.2 main函数(默认进程入口)
int main(int argc, char* argv[])
1.3 进程空间概要图
1.4 编程实验:进程参数剖析
1.4.1 进程空间实验
1.4.2 父子进程参数实验
- 下面的程序输出什么?why?
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 保存 当前选项字符(错误)
- 选项 合法:返回值 为 选项字符,optarg 指向 选项值字符串
-
默认情况下:getopt(…)对argv进行重排,所有操作数位于最后位置
-
optstring规则 的扩展定义
起始字符可以是 “ :,+,- 或省略 ”- 省略:出现选项错误时,程序中通过“ : ”或“ ? ”进行处理并给出默认错误提示
- “ : ” :错误提示开关,程序中通过返回值“ : ”或“ ? ”进行处理(无默认错误提示)
- “ + ”:提前停止开关,遇见操作数时,返回 -1,认为选项处理完毕(后续都是操作数)
- “ - ” :不重排开关,遇见操作数时,返回 1,optarg指向操作数字符串
- 组合:“ +: ” or “ -: ”
1.5.3 编程实验:进程参数编程
- 规则:“ f:is ”
- 规则扩展:“ :f:is ”
- 规则扩展:“ +:f:is ”
- 规则扩展:“ -:f:is ”
1.6 思考
- 环境变量是什么?有什么意义?