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

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

  答:验证指令: 'cd .'和'cd ..',前者代表当前目录,后者代表上级目录;

  修正:

1   banxia:~$ ls -ldi /etc/. /etc/..
2   44826625 drwxr-xr-x 150 root 0 12288 2月  11 06:57 /etc/.
3        2 drwxr-xr-x  28 root 0  4096 2月   4 06:54 /etc/..
4   banxia:~$ ls -ldi /. /..
5   2 drwxr-xr-x 28 root 0 4096 2月   4 06:54 /.
6   2 drwxr-xr-x 28 root 0 4096 2月   4 06:54 /..

 

  由上面的命令可知,除了根目录,其它目录的.和..都是指向不同的目录

2,分析下面程序:

1 #include "apue.h"
2 
3 int
4 main(void)
5 {
6    printf("hello world from process ID %ld\n", (long)getpid() );
7    exit(0);  
8 }

输出是:"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,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天后会溢出。

猜你喜欢

转载自www.cnblogs.com/mingyunrangwozoudaoxianzai/p/12356274.html