当前位置: 技术问答>linux和unix
进来的都是大侠,欢迎挑战,一道unix基础题。
来源: 互联网 发布时间:2016-04-19
本文导语: 1 在若日历时间存放在带符号的3 2位整型数中,那么到哪一年它将溢出? 2 在若进程时间存放在带符号的3 2位整型数中,而且每秒为1 0 0滴答,那么经过多少天后 该时间值将会溢出? 那位大侠帮助一下,想要解题...
1 在若日历时间存放在带符号的3 2位整型数中,那么到哪一年它将溢出?
2 在若进程时间存放在带符号的3 2位整型数中,而且每秒为1 0 0滴答,那么经过多少天后
该时间值将会溢出?
那位大侠帮助一下,想要解题过程,先谢谢了
2 在若进程时间存放在带符号的3 2位整型数中,而且每秒为1 0 0滴答,那么经过多少天后
该时间值将会溢出?
那位大侠帮助一下,想要解题过程,先谢谢了
|
要完全理解建立你去看看重定向的相关内容!具体编程是用dup/dup2等系统调用来实现的!我简单解释下!
1. a.out > outfile 2>&1
实际上,和该命令的等价的完整格式是: a.out 1>outfile 2>&1,是什么意思呢?
A)1>outfile:标准输出(1)是outfile的一个copy,即,此时的标准输出就是outfile!
B)2>&1:标准出错(2)是标准输出(1)的一份copy,即,标准出错等于标准输出,而由于标准输出等于outfile!
标准出错= 标准输出;标准输出=outfile; => 标准出错=outfile;
有上面两步可知,现在标准输出和标准出错都等于outfile,所以,所有的信息输出(包括标准输出和标准出错)都被重定向到了outfile!
2. a.out 2>&1 > outfile
道理同1!
实际上等价的完整格式为: a.out 2>&1 1>outfile
A)2>&1: 标准出错(2)是标准输出(1)的一份copy,即,标准出错等于标准输出;(此时标准输出没有重定向,所以它还是它自己);
B)1>outfile:标准输出(1)是outfile的一个copy,即,此时的标准输出就是outfile!
经过A,B两步,标准输出错定向了标准输出,而没有定向到文件,因为在进行盖次定向操作的时候,标准输出自己还没有被重定向!而标准输出,在A完成之后,才被重定向到了文件outfile!
要理解这个问题:主要是理解,重定向所做的是一份copy,是拷贝,而不是索引指向!(所谓拷贝,就是你将源拷贝一份之后,即使源变化了,你所拥有的copy仍然是源原来的东西)!
有些罗嗦,凑合着看吧!建议自己写几个使用dup系列函数的程序,你就可以深彻理解重定向了!
Good Luck!
1. a.out > outfile 2>&1
实际上,和该命令的等价的完整格式是: a.out 1>outfile 2>&1,是什么意思呢?
A)1>outfile:标准输出(1)是outfile的一个copy,即,此时的标准输出就是outfile!
B)2>&1:标准出错(2)是标准输出(1)的一份copy,即,标准出错等于标准输出,而由于标准输出等于outfile!
标准出错= 标准输出;标准输出=outfile; => 标准出错=outfile;
有上面两步可知,现在标准输出和标准出错都等于outfile,所以,所有的信息输出(包括标准输出和标准出错)都被重定向到了outfile!
2. a.out 2>&1 > outfile
道理同1!
实际上等价的完整格式为: a.out 2>&1 1>outfile
A)2>&1: 标准出错(2)是标准输出(1)的一份copy,即,标准出错等于标准输出;(此时标准输出没有重定向,所以它还是它自己);
B)1>outfile:标准输出(1)是outfile的一个copy,即,此时的标准输出就是outfile!
经过A,B两步,标准输出错定向了标准输出,而没有定向到文件,因为在进行盖次定向操作的时候,标准输出自己还没有被重定向!而标准输出,在A完成之后,才被重定向到了文件outfile!
要理解这个问题:主要是理解,重定向所做的是一份copy,是拷贝,而不是索引指向!(所谓拷贝,就是你将源拷贝一份之后,即使源变化了,你所拥有的copy仍然是源原来的东西)!
有些罗嗦,凑合着看吧!建议自己写几个使用dup系列函数的程序,你就可以深彻理解重定向了!
Good Luck!
|
1.该问题就是2038问题!
32位有符号整数,其实真正有用的只有31位,所以可以存储的时间是2^31秒,那么是多少年了,可以用如下公式
粗略计算!
y = 2^31/(365*24*60*60) (约)= 68! 而linux下时间是从1970开始的,所以到2038(1970+68)年,时间将会溢出!(貌似回到1901年?)
2.根据第1个的解答,我想第二个就不用说了吧
Good Luck!
32位有符号整数,其实真正有用的只有31位,所以可以存储的时间是2^31秒,那么是多少年了,可以用如下公式
粗略计算!
y = 2^31/(365*24*60*60) (约)= 68! 而linux下时间是从1970开始的,所以到2038(1970+68)年,时间将会溢出!(貌似回到1901年?)
2.根据第1个的解答,我想第二个就不用说了吧
Good Luck!
|
如果只要说运行结果的区别,那么就是!
1,会将标准输出和标准出错都重定向到文件outfile;
2,只会将标准输出重定向到文件outfile! 而标准出错被重定向到标准输出!
1,会将标准输出和标准出错都重定向到文件outfile;
2,只会将标准输出重定向到文件outfile! 而标准出错被重定向到标准输出!
|
学习!!!
|
帮顶。
|
第1问,貌似每个bit位不会利用得这么充分。应该是6bit计算秒,6bit分,5bit小时,5bit天数,4bit月数,还有6bit来计算年数,也就是2^1-1(63年),也就是到2033年就挂了吧?
第2问,可以照一楼的计算去算,纯计算题。
第2问,可以照一楼的计算去算,纯计算题。