易截截图软件、单文件、免安装、纯绿色、仅160KB

linux信号编程实践

简单的说,信号就是在软件层次上对中断机制的一种模拟,是一种异步通信方式。它可以实现内核进程和用户进程之间的交互。实现方式是,在任何时候发给
某一进程,如果该进程没有处于执行态,则该信号由内核保存,直到该进程恢复执行再传递给它为止。如果一个信号进程设置为阻塞,则该信号的传递被延迟,直到
其阻塞被取消时才被传递给进程。
  使用kill -l选项列出系统所支持的所有信号列表。我的Redhat 9.0上如下:
  
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR 31) SIGSYS 33) SIGRTMIN 34) SIGRTMIN+1
35) SIGRTMIN+2 36) SIGRTMIN+3 37) SIGRTMIN+4 38) SIGRTMIN+5
39) SIGRTMIN+6 40) SIGRTMIN+7 41) SIGRTMIN+8 42) SIGRTMIN+9
43) SIGRTMIN+10 44) SIGRTMIN+11 45) SIGRTMIN+12 46) SIGRTMIN+13
47) SIGRTMIN+14 48) SIGRTMIN+15 49) SIGRTMAX-14 50) SIGRTMAX-13
51) SIGRTMAX-12 52) SIGRTMAX-11 53) SIGRTMAX-10 54) SIGRTMAX-9
55) SIGRTMAX-8 56) SIGRTMAX-7 57) SIGRTMAX-6 58) SIGRTMAX-5
59) SIGRTMAX-4 60) SIGRTMAX-3 61) SIGRTMAX-2 62) SIGRTMAX-1
63) SIGRTMAX
  可见信号值在31号前的有不同的名称,这些是不可靠信号(非实时信号);后面的都是以SIGRTMIN或者SIGRTMAX开头的信号,这些是为了解决前面“不可靠信号”的问题而进行了更改和扩充的信号,也称为实时信号。其中RT就是Real Time的简写形式。
1、信号的生命周期
 
一个完整的信号生命周期可以分为3个重要阶段,这三个重要阶段由4个重要事件来刻画:信号产生、信号在进程中注册、信号在进程中注销、执行信号处理函数。相邻两个事件的时间间隔构成信号生命周期的一个阶段。
 
2、信号处理过程
 
一个不可靠信号的处理过程如下:若发现该信号已经在进程中注册,就忽略该信号,所以,若前一个信号还未注销又产生了相同的信号就会造成信号丢失。
 
一个可靠信号的处理过程如下:可靠信号发送给进程,不管该信号是否已经在进程中注册,都会被再注册一次,因此信号不会丢失。
&nbs


相关文档:

linux进程控制-wait()

http://blog.chinaunix.net/u1/53053/showart_425197.html
#include <sys/types.h> /* 提供类型pid_t的定义 */
#include <sys/wait.h>
pid_t wait(int *status)

进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wai ......

linux 系统下使用C程序实现时钟的函数

#include "stdio.h"
#include "math.h"
#include "time.h"
#define INTERVAL 1  定义宏的时间间隔为1秒
//
void On_Time()  //每一秒激发的事件
{
   printf("now=%s\n","JJK"); 
}
void Timer()  //时钟的函数
{  time_t newclk,oldclk;
   while(1)
 &nb ......

Linux c的popen()

进程I/O函数,与pclose函数一起使用。
表头文件
  #include <stdio.h>
函数定义
  FILE * popen
( const char * command
, const char * type
);
  int pclose
( FILE * stream
);
函数说明
  
popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一 ......

Linux如何走出桌面困境?






<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
       近日,在LinuxCON 2009大会上,桌面
Linux
又成为业界关注的焦点之一。各种不同的声音,嗓门都很大。在这纷纷嚷嚷的氛围中,
Linux
如何走出桌面困境?
 
   & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号