Sun Studio 12:C 用户指南

附录 C 实现定义的 ISO/IEC C99 行为

ISO/IEC 9899:1999 编程语言 C 标准指定以 C 语言编写的程序的形式并加以解释。但是,此标准留下许多实现定义的问题,即因编译器而异的问题。本章将详细介绍这些方面的内容。这些章节的编号将作为本附录中标题的一部分提供,以便与 ISO/IEC 9899:1999 标准本身进行比较:

C.1 实现定义的行为 (J.3 )

必须使用符合要求的实现,以便将此条款中所列各方面的行为选择编制成文档。下面列出了实现定义的项:

C.1.1 转换 (J.3.1 )

C.1.2 环境 (J.3.2)

表 C–1 signal 函数信号的语义

信号编号 

缺省事件 

信号的语义 

SIGHUP 1

退出 

挂起 

SIGINT 2

退出 

中断(破坏) 

SIGQUIT 3

信息转储 

退出 (ASCII FS) 

SIGILL 4

信息转储 

非法指令(找到时不重置) 

SIGTRAP 5

信息转储 

跟踪陷阱(捕获时不重置) 

SIGIOT 6

信息转储 

IOT 指令 

SIGABRT 6

信息转储 

由中止使用 

SIGEMT 7

信息转储 

EMT 指令 

SIGFPE 8

信息转储 

浮点异常 

SIGKILL 9

退出 

中止(找不到,也无法忽略) 

SIGBUS 10

信息转储 

总线错误 

SIGSEGV 11

信息转储 

段违规 

SIGSYS 12

信息转储 

系统调用参数错误 

SIGPIPE 13

退出 

写在管道上,但无读取者 

SIGALRM 14

退出 

报警时钟 

SIGTERM 15

退出 

来自中止的软件终止信号 

SIGUSR1 16

退出 

用户定义的信号 1 

SIGUSR2 17

退出 

用户定义的信号 2 

SIGCLD 18

忽略 

子项状态更改 

SIGCHLD 18

忽略 

子进程状态更改别名 (POSIX) 

SIGPWR 19

忽略 

电源故障,重新启动 

SIGWINCH 20

忽略 

窗口大小更改 

SIGURG 21

忽略 

紧急套接字条件 

SIGPOLL 22

退出 

发生了可轮询事件 

SIGIO 22

Sigpoll 

可能有套接字 I/O 

SIGSTOP 23

停止 

停止(找不到,也无法忽略) 

SIGTSTP 24

停止 

来自 tty 的用户停止请求 

SIGCONT 25

忽略 

停止的进程已继续 

SIGTTIN 26

停止 

已尝试后台 tty 读 

SIGTTOU 27

停止 

已尝试后台 tty 写 

SIGVTALRM 28

退出 

虚拟计时器已过期 

SIGPROF 29

退出 

文件配置计时器已过期 

SIGXCPU 30

信息转储 

已超出 cpu 限制 

SIGXFSZ 31

信息转储 

已超出文件大小限制 

SIGWAITING 32

忽略 

线程代码不再使用保留的信号 

SIGLWP 33

忽略 

线程代码不再使用保留的信号 

SIGFREEZE 34

忽略 

检查点暂停 

SIGTHAW 35

忽略 

检查点恢复 

SIGCANCEL 36

忽略 

线程库使用的抵消信号 

SIGLOST 37

忽略 

资源丢失(记录锁定丢失) 

SIGXRES 38

忽略 

超出资源控制(参见 setrctl(2)) 

SIGJVM1 39

忽略 

保留供 Java 虚拟机 1 使用 

SIGJVM2 40

忽略 

保留供 Java 虚拟机 2 使用 

C.1.3 标识符 (J.3.3)

C.1.4 字符 (J.3.4)

表 C–2 标准字母换码序列唯一值

换码序列 

唯一值 

\a(报警) 

\b(退格) 

\f(换页) 

12 

\n(换行) 

10 

\r(回车) 

13 

\t(水平制表符) 

\v(垂直制表符) 

11 

C.1.5 整数 (J.3.5)

C.1.6 浮点 (J.3.6)

C.1.7 数组和指针 (J.3.7)

C.1.8 提示 (J.3.8)

C.1.9 结构、联合、枚举和位字段 (J.3.9)

表 C–3 结构成员的填充和对齐

类型 

对齐边界 

字节对齐 

char 

字节 

short 

半字 

int 

字 

long (SPARC) v8 

字 

long (SPARC) v9 

双字 

float (SPARC) 

字 

double (SPARC) 

双字 

double (x86)

双字 

long double (SPARC) v8 

双字 

long double (x86)

字 

long double (SPARC) v9 

四倍长字 

16 

pointer (SPARC) v8 

字 

pointer (SPARC) v9 

四倍长字 

long long 

双字 (SPARC) 

long long (x86)

字 

_Complex 

浮点 

_Complex 

双精度 

16 

_Complex 

长双精度 

32 

_Imaginary 

浮点 

_Imaginary (SPARC) 

双精度 

_Imaginary (x86)

双精度 

_Imaginary (SPARC) v8 

长双精度 

_Imaginary (SPARC) v9 

长双精度 

16 

_Imaginary (x86)

长双精度 

C.1.10 限定符 (J.3.10)

C.1.11 预处理指令 (J.3.11)

C.1.12 库函数 (J.3.12)

终止操作可用于 wait(3C) 或 waitpid(3C) 的状态是由 SIGABRT 信号终止的进程状态。请参见 abort(3C)、exit(1) 和 _Exit(2) 手册页。

exit_Exit 返回的终止状态,具体取决于正在进行的调用进程的父进程。

如果调用进程的父进程正在执行 wait(3C)、wait3(3C)、waitid(2) 或 waitpid(3C),并且既未设置 SA_NOCLDWAIT 标志,也未将 SIGCHLD 设置为 SIG_IGN,则它会被告知调用进程的终止,并且它可使用状态的低阶八位(即,位 0377)。如果父进程未处于等待状态,则当父进程随后执行 wait()、wait3()、waitid() 或 waitpid() 时可以使用子进程的状态。

C.1.13 体系结构 (J.3.13)

本章中其他位置的内容定义了 1999 C 标准中未明确指定的对象的实现定义数值、顺序和编码。

表 C–4 sizeof 操作符所得到的结果(以字节计)

类型 

大小(以字节计) 

char 

short 

int 

long 

long v9 

long long 

float 

double 

long double (SPARC) 

16 

long double (x86)

12 

pointer 

pointer v9 

 

_Complex float 

 

_Complex double 

16 

 

_Complex long double 

32 

 

_Imaginary float 

 

_Imaginary double 

 

_Imaginary long double (SPARC) 

16 

 

_Imaginary long double (x86)

12 

C.1.14 语言环境特定的行为 (J.4)

主机环境的以下特征与特定的语言环境有关,并且要求通过该实现将其编制成文档:

表 C–5 月份名称

1 月 

5 月 

9 月 

2 月 

6 月 

10 月 

3 月 

7 月 

11 月 

4 月 

8 月 

12 月 

指定的周日期名称如下:

表 C–6 周日期及缩写

日期 

缩写 

星期日 星期四 

日 四 

星期一 星期五 

一 五 

星期二 星期六 

二 六 

星期三 

三 

时间的格式为:

%H:%M:%S

日期的格式为:

%m/%d/ -Xc 模式。

上午和下午的格式为:上午 下午