linux操作系统 乌本图 官网
这是官网,下载的时候注意一下版本问题,它分为桌面版,本本版,服务器版等,每个版本又分位amd和intel版本,根据自己的cpu选择相应的版本就ok了。
linux grep中文意思是什么
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。
linux中的sleep怎么用
sleep函数:
#include 《unistd.h》
unsigned int sleep(unsigned int seconds);
此函数使调用进程被挂起,直到满足以下条件之一:
1)已经过了seconds所指定的墙上时钟时间
2)调用进程捕捉到一个信号并从信号处理程序返回
注:由于其他系统活动,实际返回时间比所要求的会迟一些,像alarm一样。
sleep的返回值:
1)在上述第一种情形中,返回值是0
2)当由于捕捉到某个信号sleep提前返回时,返回值是未睡够的时间(所要求的时间减去实际休眠时间)
看看下面的例子,猜猜sleep()的返回值是多少
1 #include 《stdio.h》
2 #include 《time.h》
3 #include 《signal.h》
4
5 #define DIAPAUSE 30 //sleep time 30s
6 #define TIMEOUT 5
7
8 void sigalrm(int signo);
9
10 int main()
11 {
12 struct sigaction sa;
13
14 sa.sa_handler = sigalrm;
15 sa.sa_flags = 0;
16 sigemptyset(&sa.sa_mask);
17 if(sigaction(SIGALRM, &sa, NULL) 《 0)
18 {
19 printf(“sigaction error!\n“);
20 return;
21 }
22
23 while(1)
24 {
25 printf(“alarm(TIMEOUT)...\n“);
26 alarm(TIMEOUT);
27 printf(“...\n“);
28 printf(“sleep(DIAPAUSE) == %d\n“, sleep(DIAPAUSE));
29 }
30
31 return 0;
32 }
33
34 void sigalrm(int signo)
35 {
36 printf(“timeout...\n“);
37 return;
38 }
sleep函数的返回值是25。
如果将TIMEOUT的值改为大于DIAPAUSE的值,如50的话,sleep函数在睡够了DIAPAUSE后就会返回,返回值为0。
如果我们即需要alarm又需要sleep一个预订的事件怎么办?如上面的例子,我想在...后再sleep 30s然后再进入循环。这在socket通讯过程中,在设置超时的时候可能会用到。
注意到alarm函数。
#include 《unistd.h》
unsigned int alarm(unsigned int senconds);
使用alarm函数可以设置一个计时器,在将来某个指定的时间该计时器会超时。当计时器超时时,产生SIGALARM信号。如果不捕捉或不忽略此信号,则其默认动作是终止调用该alarm函数的进程。
每个进程只能有一个闹钟时钟,如果在调用alarm时,已经为该进程设置过闹钟时钟,而且它还没有超时,则将该闹钟时钟的余留值作为本次alarm函数调用的返回值。以前登记的闹钟时钟将被新值代替。
如果有以前为进程登记的尚未超过的闹钟时钟,而且本次调用的seconds为0,则取消以前的闹钟时钟,其余留值仍作为alarm的返回值。
(以上这几段话摘自《unix环境高级编程》)。
所以在while循环的printf(“...\n“);后面添加一句alarm(0);就可以满足我的要求,即在...后再sleep 30s然后再进入循环。