signal.h ( File view )

  • By 2010-08-31
  • View(s):24
  • Download(s):2
  • Point(s): 1
			#ifndef _SIGNAL_H
#define _SIGNAL_H

#include <sys/types.h>		// 类型头文件。定义了基本的系统数据类型。

typedef int sig_atomic_t;	// 定义信号原子操作类型。
typedef unsigned int sigset_t;	/* 32 bits */// 定义信号集类型。

#define _NSIG 32		// 定义信号种类 -- 32 种。
#define NSIG _NSIG		// NSIG = _NSIG

// 以下这些是Linux 0.11 内核中定义的信号。
#define SIGHUP 1		// Hang Up -- 挂断控制终端或进程。
#define SIGINT 2		// Interrupt -- 来自键盘的中断。
#define SIGQUIT 3		// Quit -- 来自键盘的退出。
#define SIGILL 4		// Illeagle -- 非法指令。
#define SIGTRAP 5		// Trap -- 跟踪断点。
#define SIGABRT 6		// Abort -- 异常结束。
#define SIGIOT 6		// IO Trap -- 同上。
#define SIGUNUSED 7		// Unused -- 没有使用。
#define SIGFPE 8		// FPE -- 协处理器出错。
#define SIGKILL 9		// Kill -- 强迫进程终止。
#define SIGUSR1 10		// User1 -- 用户信号1,进程可使用。
#define SIGSEGV 11		// Segment Violation -- 无效内存引用。
#define SIGUSR2 12		// User2 -- 用户信号2,进程可使用。
#define SIGPIPE 13		// Pipe -- 管道写出错,无读者。
#define SIGALRM 14		// Alarm -- 实时定时器报警。
#define SIGTERM 15		// Terminate -- 进程终止。
#define SIGSTKFLT 16		// Stack Fault -- 栈出错(协处理器)。
#define SIGCHLD 17		// Child -- 子进程停止或被终止。
#define SIGCONT 18		// Continue -- 恢复进程继续执行。
#define SIGSTOP 19		// Stop -- 停止进程的执行。
#define SIGTSTP 20		// TTY Stop -- tty 发出停止进程,可忽略。
#define SIGTTIN 21		// TTY In -- 后台进程请求输入。
#define SIGTTOU 22		// TTY Out -- 后台进程请求输出。

/* Ok, I haven't implemented sigactions, but trying to keep headers POSIX */
/* OK,我还没有实现sigactions 的编制,但在头文件中仍希望遵守POSIX 标准 */
#define SA_NOCLDSTOP 1		// 当子进程处于停止状态,就不对SIGCHLD 处理。
#define SA_NOMASK 0x40000000	// 不阻止在指定的信号处理程序(信号句柄)中再收到该信号。
#define SA_ONESHOT 0x80000000	// 信号句柄一旦被调用过就恢复到默认处理句柄。

// 以下参数用于sigprocmask()-- 改变阻塞信号集(屏蔽码)。这些参数可以改变该函数的行为。
#define SIG_BLOCK 0		/* for blocking signals */
// 在阻塞信号集中加上给定的信号集。
#define SIG_UNBLOCK 1		/* for unblocking signals */
// 从阻塞信号集中删除指定的信号集。
#define SIG_SETMASK 2		/* for setting the signal mask */
// 设置阻塞信号集(信号屏蔽码)。

#define SIG_DFL ((void (*)(int))0)	/* default signal handling */
// 默认的信号处理程序(信号句柄)。
#define SIG_IGN ((void (*)(int))1)	/* ignore signal */
// 忽略信号的处理程序。

// 下面是sigaction 的数据结构。
// sa_handler 是对应某信号指定要采取的行动。可以是上面的SIG_DFL,或者是SIG_IGN 来忽略
// 该信号,也可以是指向处理该信号函数的一个指针。
// sa_mask 给出了对信号的屏蔽码,在信号程序执行时将阻塞对这些信号的处理。
// sa_flags 指定改变信号处理过程的信号集。它是由37-39 行的位标志定义的。
// sa_restorer 恢复过程指针,是用于保存原返回的过程指针。
// 另外,引起触发信号处理的信号也将被阻塞,除非使用了SA_NOMASK 标志。
struct sigaction
{

  void (*sa_handler) (int);
  sigset_t sa_mask;
  int sa_flags;
  void (*sa_restorer) (void);

};

// 为信号_sig 安装一个新的信号处理程序(信号句柄),与sigaction()类似。
void (*signal (int _sig, void (*_func) (int))) (int);
// 向当前进程发送一个信号。其作用等价于kill(getpid(),sig)。
int raise (int sig);
// 可用于向任何进程组或进程发送任何信号。
int kill (pid_t pid, int sig);
// 向信号集中添加信号。
int sigaddset (sigset_t * mask, int signo);
// 从信号集中去除指定的信号。
int sigdelset (sigset_t * mask, int signo);
// 从信号集中清除指定信号集。
int sigemptyset (sigset_t * mask);
// 向信号集中置入所有信号。
int sigfillset (sigset_t * mask);
// 判断一个信号是否是信号集中的。1 -- 是, 0 -- 不是, -1 -- 出错。
int sigismember (sigset_t * mask, int signo);	/* 1 - is, 0 - not, -1 error */
// 对set 中的信号进行检测,看是否有挂起的信号。
int sigpending (sigset_t * set);
// 改变目前的被阻塞信号集(信号屏蔽码)。
int sigprocmask (int how, sigset_t * set, sigset_t * oldset);
// 用sigmask 临时替换进程的信号屏蔽码,然后暂停该进程直到收到一个信号。
int sigsuspend (sigset_t * sigmask);
// 用于改变进程在收到指定信号时所采取的行动。
int sigaction (int sig, struct sigaction *act, struct sigaction *oldact);

#endif /* _SIGNAL_H */
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 1

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
linux0.00 B0% 04-10-07
<boot>0.00 B04-10-07 15:01
bootsect.s12.49 kB08-01-04 21:38
head.s13.22 kB08-01-04 21:38
setup.s12.42 kB08-01-04 21:38
<fs>0.00 B04-10-07 15:01
bitmap.c8.46 kB02-09-04 13:12
block_dev.c3.95 kB02-09-04 13:12
buffer.c17.71 kB02-09-04 13:12
char_dev.c4.09 kB02-09-04 13:12
exec.c18.90 kB02-09-04 13:12
fcntl.c3.33 kB02-09-04 13:12
file_dev.c4.82 kB02-09-04 13:12
file_table.c209.00 B02-09-04 13:12
inode.c14.92 kB02-09-04 13:12
ioctl.c1.94 kB02-09-04 13:12
Makefile6.80 kB08-01-04 21:45
namei.c37.20 kB02-09-04 13:12
open.c10.00 kB02-09-04 13:12
pipe.c5.42 kB02-09-04 13:12
read_write.c5.86 kB02-09-04 13:12
stat.c2.69 kB02-09-04 13:12
super.c13.57 kB02-09-04 13:12
truncate.c2.46 kB02-09-04 13:12
<include>0.00 B04-10-07 15:01
a.out.h8.22 kB02-09-04 13:14
<asm>0.00 B04-10-07 15:01
io.h772.00 B02-09-04 13:14
memory.h1.03 kB08-01-04 22:13
segment.h2.50 kB02-09-04 13:14
system.h4.08 kB02-09-04 13:14
const.h589.00 B02-09-04 13:14
ctype.h1.68 kB02-09-04 13:14
errno.h2.30 kB02-09-04 13:14
fcntl.h3.30 kB02-09-04 13:14
<linux>0.00 B04-10-07 15:01
config.h2.16 kB02-09-04 13:14
fs.h9.72 kB02-09-04 13:14
hdreg.h2.94 kB02-09-04 13:14
head.h760.00 B02-09-04 13:14
kernel.h1.44 kB02-09-04 13:14
mm.h473.00 B02-09-04 13:14
sched.h13.25 kB02-09-04 13:14
sys.h5.41 kB02-09-04 13:14
tty.h3.93 kB02-09-04 13:14
signal.h4.01 kB02-09-04 13:14
stdarg.h1.77 kB02-09-04 13:14
stddef.h378.00 B02-09-04 13:14
string.h21.75 kB02-09-04 13:14
<sys>0.00 B04-10-07 15:01
stat.h2.37 kB02-09-04 13:14
times.h377.00 B02-09-04 13:14
types.h1.10 kB02-09-04 13:14
utsname.h423.00 B02-09-04 13:14
wait.h1.48 kB02-09-04 13:14
termios.h13.58 kB02-09-04 13:14
time.h1.81 kB02-09-04 13:14
unistd.h9.21 kB02-09-04 13:14
utime.h392.00 B02-09-04 13:14
<init>0.00 B04-10-07 15:01
main.c12.52 kB02-09-04 13:12
<kernel>0.00 B04-10-07 15:01
asm.s5.10 kB08-01-04 22:48
<blk_drv>0.00 B04-10-07 15:01
blk.h5.69 kB02-09-04 13:14
floppy.c23.49 kB02-09-04 13:12
hd.c17.14 kB02-09-04 13:12
ll_rw_blk.c7.59 kB02-09-04 13:12
Makefile4.25 kB08-01-04 22:53
ramdisk.c6.13 kB02-09-04 13:12
<chr_drv>0.00 B04-10-07 15:01
console.c30.91 kB02-09-04 13:12
keyboard.S21.04 kB08-01-04 22:59
Makefile4.81 kB08-01-04 22:59
rs_io.s5.75 kB08-01-04 22:59
serial.c2.91 kB02-09-04 13:12
tty_io.c18.40 kB02-09-04 13:12
tty_ioctl.c10.70 kB02-09-04 13:12
exit.c8.08 kB02-09-04 13:12
fork.c6.78 kB15-07-07 22:10
<math>0.00 B04-10-07 15:01
Makefile3.21 kB08-01-04 23:01
math_emulate.c2.08 kB02-09-04 13:12
mktime.c2.72 kB02-09-04 13:12
panic.c952.00 B02-09-04 13:12
printk.c1.75 kB02-09-04 13:12
sched.c18.57 kB16-07-07 21:23
signal.c5.61 kB02-09-04 13:12
sys.c7.62 kB02-09-04 13:12
system_call.s12.53 kB08-01-04 22:48
traps.c8.29 kB04-10-07 14:57
vsprintf.c9.96 kB02-09-04 13:12
<lib>0.00 B04-10-07 15:01
close.c397.00 B02-09-04 13:12
ctype.c1.72 kB02-09-04 13:12
dup.c401.00 B02-09-04 13:12
errno.c66.00 B02-09-04 13:12
execve.c607.00 B02-09-04 13:12
Makefile4.83 kB08-01-04 22:30
malloc.c13.50 kB02-09-04 13:12
open.c1.22 kB02-09-04 13:12
setsid.c382.00 B02-09-04 13:12
string.c199.00 B02-09-04 13:12
wait.c774.00 B02-09-04 13:12
write.c545.00 B02-09-04 13:12
_exit.c616.00 B02-09-04 13:12
Makefile8.58 kB08-01-04 22:21
<mm>0.00 B04-10-07 15:01
Makefile2.91 kB08-01-04 22:34
memory.c25.10 kB02-09-04 13:12
page.s842.00 B08-01-04 22:34
<tools>0.00 B04-10-07 15:01
build.c8.12 kB02-09-04 13:12
...
Sponsored links

signal.h (286.77 kB)

Need 1 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D