Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1744868
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: 系统运维

2012-03-27 17:50:48

总的来说,这些不同的标准彼此都很好的相处。既然SUSv3是POSIX.1的超集,我们主要关心的ISO C和POSIX.1之间是任何差异。它们确实有些差异。


ISO C定义了函数clock来返回进程使用的CPU时间的量。这个返回值是clock_t值。为了把它转换成秒,我们用它除以CLOCKS_PER_SEC, 它定义在头文件里。POSIX.1定义了函数times来返回CPU时间(给调用者和它的terminated children)和时钟时间。所有这些时间值都是clock_t值。sysconf函数用来得到每秒的时钟tick数,与times函数的返回值一起使 用。我们有相同的术语:每秒钟的tick数,但在ISO C和POSIX.1有不同的定义。两个标准都使用相同的数据类型(clock_t)来表示这些不同的值。这个差异可以在Solaris里看到,clock 返回微秒(导致CLOCK_PER_SEC值为一百万),而sysconf返回值100作为每秒的时钟tick数。


当ISO C标准规定一个函数但不像POSIX.1那样强硬地规定时,会有潜在的冲突。这种情况函数会要求在POSIX环境(在多进程环境下)和ISO C环境下(基本不设想当前的操作系统)有不同的实现。signal函数就是一个例子。如果我们不明就里地使用由Solaris提供的signal函数(期 望写出可以运行在ISO C环境和更老的UNIX系统上的代码),它将提供与POSIX.1的sigaction函数不同的语义。后面在谈到signal时我们会更深入地讨论。


阅读(842) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~