UNIX环境高级编程习题——第一章

仇实
  1. 在系统上验证,除根目录外,目录.和..是不同的‘

ls -> list files

ls -i
inode
显示inode节点信息

ls -d
directory
表示显示目录自身的属性,而不是目录中的内容。

ls -l
long list format
除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出

除了根目录,其它目录的.和..都是指向不同的目录


#include "apue.h"

int main(void)
{
   printf("hello world from process ID %ld\n", (long)getpid() );
   exit(0);
}

chmod -> change mode
chmod r+x
chmod 777

程序需要先编译再运行(?)
mv a.out a.c
gcc -o a.out a.c
./c.out

输出是:"hello world from process ID 851"
再执行一遍,输出:"hello world from process ID 854"
请说明进程ID为852和853发生了什么情况?

答:在执行这两次程序的间隙中,系统产生了ID为852和853的其他进程,所以第二次运行进程ID为854。

3,perror的参数是用ISO C的属性const定义的,而strerror的整型参数没有用此属性定义,为什么?
(尚未理解)
答:perror的参数是一个指针,如果不用const定义,可能perror会意外改变此指针指向的值;strerror的值是一个整型参数,只会传一个形参进strerror函数里,不会改变传进去的整型参数。

4,若日历时间存放在带符号的32位整型数中,那么到哪一年它将溢出?可以用什么方法扩展溢出浮点数?采用的策略是否与现有的应用相兼容?

答:32位带符号整型数范围: - 2^31 ~ 2^31 -1
-2,147,483,648 ‬ ~2,147,483,648‬,一年按365天计算,可能计算68.09年,到69年时他将溢出。
采用32位无符号整型数扩展,因为都是32位数,且时间没有负数,所以与现有应用兼容。

5,若进程时间存放在带符号的32位整型数中,而且每秒为100时钟滴答,那么经过多少天后,该时间值会溢出?

答:2,147,483,648‬/100=2,147,483,6.48‬s=248.55天后会溢出。

阅读 417

将所有未知变为已知

17 声望
0 粉丝
0 条评论

将所有未知变为已知

17 声望
0 粉丝
文章目录
宣传栏