网络软件设计-05.pptVIP

  • 5
  • 0
  • 约4.6千字
  • 约 24页
  • 2016-09-14 发布于江苏
  • 举报
1.5 编程基础 1.5.1 Linux系统的基本术语 1.内核    内核就是操作系统,包括文件系统、存储管理、CPU 调度以及I/O设备管理。一般内核直接同硬件打交道,但也可以通过另一个操作系统控制硬件。 2.进程    Linux操作系统是一个多任务操作系统,在其上设计的每一个程序,运行后都将成为一个独立的实体,称为进程。在UNIX中,产生一个新进程的途径是fork系统功能调用。进程的概念使得在同一时刻可以执行多个任务,一个程序也可以作为多个不同进程同时执行。进程由用户上下文、正文段、数据段、堆和内核上下文组成。 ● 用户上下文:包含了用户模式下进程可访问的空间。    ● 正文段:包含了真正可执行的指令。    ● 数据段:指程序数据。    ● 堆:指可用来动态分配系统进程的数据空间。    ● 内核上下文:只能由内核维护和访问。它包含内核,跟踪进程运行以及挂起和重新唤醒进程所需要的信息。 3.系统调用 UNIX/Linux系统提供了多个可直接使用的内核服务入口。进程可以通过这些入口获得内核的服务,称这些入口的使用为系统调用。标准的 UNIX/Linux C程序为每一个系统调用提供了一个接口,这样,对程序员来说,系统调用与普通的函数调用一样。    对于大多数函数调用来说,正确的系统功能调用返回大于等于0的值,出错调用返回-1。UNIX/Linux的C语言提供了一个整型的全局变量errno存放出错码。在errno.h头文件中保存了错误码值和错误名称。当系统调用出错时,通过errno查找出错类型,errno的值要在出错后才检查,因为成功通过的系统调用并不将它置为0值。 C系统调用和函数除了上述返回一个整型值表示调用成功与否外,还返回一个结构信息:如系统调用stat和fstate返回一个结构指针。 4.变元表 变元表是用来向执行的程序提供参数的,是一个指向字符串的指针数组。其长度可变,最大长度不应超过5120或10?240个字节。在C语言中变元表主要用argc,argv表示。 C语言的main函数格式为: main(int argc,char argv[]) { … } 其中,第一个变元argc指明有几个变元字符串,其值大于等于1,等于1是指这个程序的引用名。第二个变元argv是一个字符型的指针数组,它可以等价地定义为图1-18所示的结构。 argv的每一个指针指向一个变元字符串,argc指出argv的指针个数。main函数argc,argv 参数根据需要可有可无。 变元表存放在进程的数据空间中,进程可以使用这些参数。当一个程序被激活时,通常把这些参数放进初始堆栈。下面说明它们的使用,程序名为example。 main(int argc,char * argv[?]) { printf(argc:%d\n,argc); printf(argv:%s,argv[0]); } 运行结果: argc:1 argv:example 5.环境表 在程序运行时,同接收变元表一样,也接收环境变量表。环境变量是指向字符串的指针阵列,其长度可变。由于环境变量表中的某几个元素未知,因此这个指针阵列由一个空指针结尾。环境变量表可以作为程序的第三个参数来访问。 main(int argc,char * argv[?],char *envp[?]) { … } 下面的C程序给出所有环境字符的值。 main(int argc,char * argv[?],char *envp[?]) { int n; printf(environment parameters:\n); for (n=0;envp[n]!=(char *)0;n++) printf(%s\n,envp[n]); exit(0); } 运行结果: environment parameters: HOME=/usr1/xduser SHELL=/bin/csh TERM=att630 USER= xduser PATH=/usr1/ xduser/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin EXINIT=set optimize redraw shell=/bin/csh 提供了一个外部变量environ,也可以用来访问环境表。用environ实现上述程序功能。 main(int argc,char * argv

文档评论(0)

1亿VIP精品文档

相关文档