为你推荐

进程环境之C程序的存储空间布局

从历史上讲,C程序一直由下面几部分组成:正文段。这是由CPU执行的机器指令部分。通常,正文段是可共享的,所以即使是频繁执行的程序(如文本编辑器、C编译器和shell等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由于意外而修改其自身的指令。初始化数据段。(所有带有初始值的全局变量)通常将此段称为数据...

进程环境之环境表

每个程序都会接收到一张环境表。与参数表一样,环境表也是一个字符指针数组,其中每个指针包含一个以null结束的C字符串的地址。全局变量environ则包含了该指针数组的地址:externchar**environ;要在程序中使用全局变量environ时,需要用该语句作变量声明。extern指示environ在其他文件中已...
代码星球·2021-02-21

进程环境之命令行参数

当执行一个程序时,调用exec的进程可将命令行参数传递给该新进程。这是UNIXshell的一部分常规操作。程序清单7-3将所有命令行参数回送到标准输出[root@localhostapue]#catprog7-3.c#include"apue.h"intmain(intargc,char*argv[]){inti;fo...

进程环境之进程终止

有8种方式使进程终止(termination),其中5种为正常终止,它们是:(1)从main返回。(2)调用exit。(3)调用_exit或_Exit。(4)最后一个线程从其启动例程返回。(5)最后一个线程调用pthread_exit。异常终止有3种方式,它们是:(6)调用abort。(7)接到一个信号并终止。(8)最...
代码星球·2021-02-21

进程环境之main函数

C程序总是从main函数开始执行。main函数的原型是:intmain(intargc,char*argv[]);其中,argc是命令行参数的数目,argv是指向参数的各个指针所构成的数组。当内核执行C程序时(使用一个exec函数),在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地...
代码星球·2021-02-21

系统数据文件和信息之时间和日期例程

由UNIX内核提供的基本时间服务是计算自国际标准时间公元1970年1月1日00:00:00以来经过的秒数。这种秒数是以数据类型time_t表示的。我们称它们为日历时间。日历时间包括时间和日期。UNIX在这方面与其他操作系统的区别是:(a)以国际标准时间而非本地时间计时;(b)可自动进行转换,例如变换到夏时制;(c)将时...

系统数据文件和信息之系统标识

POSIX.1定义了uname函数,它返回与当前主机和操作系统有关的信息。#include<sys/utsname.h>intuname(structutsname*name);返回值:若成功则返回非负值,若出错则返回-1通过该函数的参数向其传递一个utsname结构的地址,然后该函数填写此结构。POSIX...

系统数据文件和信息之其他数据文件

在日常操作中,UNIX系统还使用很多其他文件。例如,BSD网络软件有一个记录各网络服务器所提供服务的数据文件(/etc/services),有一个记录协议信息的数据文件(/etc/protocols),还有一个则是记录网络信息的数据文件(/etc/networks)。一般情况下,对于每个数据文件至少有三个函数:(1)g...

系统数据文件和信息之登录账户记录

大多数UNIX系统都提供下列两个数据文件:utmp文件,它记录当前登录进系统的各个用户;wtmp文件,它跟踪各个登录和注销事件。在V7中,每次写入这两个文件中的是包含下列结构的一条二进制记录:structutmp{charut_line[8];/*ttyline:"ttyh0","ttyd0","ttyp0",...*...

系统数据文件和信息之附加组ID

4.2BSD引入了附加组ID(supplementarygroupID)的概念。我们不仅可以属于口令文件记录项中组ID所对应的组,也可属于多达16个另外的组。文件访问权限检查相应被修改为:不仅将进程的有效组ID与文件的组ID相比较,而且也将所有附加组ID与文件的组ID进行比较。常量NGROUPS_MAX规定了附加组ID...

系统数据文件和信息之组文件

UNIX组文件(POSIX.1称其为组数据库)包含了表6-3中所示的字段。这些字段包含在<grp.h>中所定义的group结构中。               ...

系统数据文件和信息之阴影口令

加密口令是经单向加密算法处理过的用户口令副本。因为此算法是单向的,所以不能从加密口令猜测到原来的口令。历史上使用的算法总是从64字符集中产生13个可打印字符。某些较新的系统使用MD5算法对口令加密,为每个加密口令产生31个字符。给出一个加密口令,找不到一种算法可以将其逆转到普通文本口令(普通文本口令是在Password...

系统数据文件和信息之口令文件

UNIX系统的口令文件(POSIX.1则将其称为用户数据库)包含了表6-1中所示的各字段,这些字段包含在<pwd.h>中定义的passwd结构中。注意,POSIX.1只指定了passwd结构包含的10个字段中的5个。大多数平台至少支持其中7个字段。     ...

标准I/O的替代软件

标准I/O并不完善。标准I/O库的一个不足之处是效率不高,这与它需要复制的数据量有关。当使用每次一行函数fgets和fputs时,通常需要复制两次数据:一次是在内核和标准I/O缓冲之间(当调用read和write时),第二次是在标准I/O缓冲区和用户程序中的行缓冲区之间。替代版本fio:快速I/O库则避免了这一点,其方...
代码星球·2021-02-21

APUE习题5.x

5.4下面的代码在一些机器上运行正确,而在另外一些机器运行时出错,解释问题所在?#include<stdio.h>intmain(void){charc;while((c=getchar())!=EOF)putchar(c);}答:这是一个比较常见的错误。getc以及getchar的返回值是整型,而不是字符...
代码星球·2021-02-21