设为首页 加入收藏

TOP

Linux编程---进程基础
2014-11-23 22:22:18 来源: 作者: 【 】 浏览:14
Tags:Linux 编程 --- 进程 基础

进程这个概念大家都很熟悉了吧...我就不多说了..


首先是进程环境.也就是Shell相关的内容.

这都是很基础的我就挑一些我自己都不太清楚的写写.

一.命令行参数

POSIX对命令行的语法约定:

1.实用程序名至少两个,至多9个字符,且只包含小写字母和数字.(Linux应该不止9个吧.我觉得这是Unix下shell的规定).

2.选项名必须是但个字母或者数字,-W选项保留给实现扩展使用,不允许多数字选项.

3.选项和它的选项值可以作为也可以不作为分开的单词.即-ofoo和-o foo是一样的..(我看的达内视频,里面有个老师就喜欢这么写..)

4.如果多个选项均不要求有选项值的话,可以集中在一个短横线分隔符之后作为一个单词,因此’-abc’和’-a -b -c’等价.(貌似鸟哥书上写过...但是我完全忘了...)

5.第一次出现的参数’--’终止所有选项.后继的任何参数均视为操作数.即使他们是以’-’开头的单个字符也是如此.貌似安装程序的时候遇到这个情况比较多...但我记得我一搞写好多个’--’接在后面.

6.多个选项可按任意顺序出现,单个选项也可多次出现,其解释留给应用程序.

7.仅由一个短横线字符组成的单词按操作数解释.UNIX系统约定,它用于指定来自标准输入流的输入或标准输出流的输出.例如,如下命令中,单个短横线’-’是选项参数-o的值,他代表标准输出流,即指定将会变文件输出到标准输出流.

gcc -S file.c -o - -pipe

这个意思我猜是直接把输出输出到NULL文件中...-pipe表示用管道代替过程中的临时文件.我也是第一次晓得这个-pipe参数.这么写了之后比较简单的makefile貌似都可以不写clean了

是否每个shell程序都要写一个函数来分析这些命令行参数呢

实际上已经有了库函数帮忙做这件事情了...(原来写过几个小程序都是自己写函数分析的....)

int getopt(int argc,char 8const argv[],const char *optstring);

前两个参数就是main后面的参数.第三个参数就是解析出来串的结果.每次调用一个getopt则获得一个optstring参数.

这个optstring参数可能比较复杂.注意,这里不是提取出参数放到optstring中,而是根据optstring来提取出参数是怎样的..还是举个例子吧.

c=getopt(argc,argv,”:f:is”)

“:f:is”中的顺序不重要.开头的”:”表示在后面遇到错误之后不返回’ ’,而是返回’:’.

”f:”表示f这个参数后面要跟一个操作数.

第一次调用optstring的时候会对optstring分析.然后每次遇到f,i,s这三个之一的参数时,就会返回其当得到参数类型(f,i,s之一).返回f的时候,同时会设置optarg.这个optarg是一个全局字符指针.也就是相当于把’:’在命令行中所表示的操作数给optarg.当遇到未知参数的时候,optarg被设置为’ ’.同时c也被设置为’ ’.

这个函数配置了四个全局变量

optarg----就是解析出来的内容

optind----再次调用getopt的时候要分析argv.这是个下标值.

optopt----最后一个未知选项.

opterr----用来报错.如果在getopt调用之前就设置不为0,并且opstring的开头不是”:”,getopt在遇到位置选项字符或缺少选项所要求的值时,会自动打印一个错误消息到标准错误流中.设置成0的话,将不打印任何错误信息,但仍然返回” ”或”:”指明错误.

我感觉已经解释的差不多了...写完介绍突然觉得好麻烦...还不如自己写函数分析.....


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux 下malloc的探究 下一篇Linux编程---I/O部分

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: