#include<stdio.h> |
#include<stdlib.h> |
#include<signal.h> |
#include<unistd.h> |
void handle( int s) |
{ |
printf ( "外部用户中断处理...!\n" ); |
sleep(3); |
printf ( "外部用户中断处理完毕!\n" ); |
} |
main() |
{ |
int i; |
sigset_t sigs,sigt,sigu; |
sigemptyset(&sigs); |
sigemptyset(&sigt); |
sigemptyset(&sigu); |
sigaddset(&sigs,SIGINT); |
signal (SIGINT,handle); |
sigprocmask(SIG_BLOCK,&sigs,0); |
for (i=0;i<10;i++) |
{ |
printf ( "正在拷贝电影<%d>!\n" ,i); |
sleep(5); |
printf ( "电影<%d>拷贝完毕!\n" ,i); |
sigpending(&sigu); //查询被屏蔽的信号 |
if (sigismember(&sigu,SIGINT)) |
{ |
sigsuspend(&sigt); //挂起处理外部中断 |
} |
} |
printf ( "所有电影拷贝完毕\n" ); |
sigprocmask(SIG_UNBLOCK,&sigs,0); |
printf ( "结束\n" ); |
} |
初级程序员
by: 我的程序员之路 发表于:2013-05-05 20:09:59 顶(0) | 踩(0) 回复
C 只学了个皮毛,代码略懂,不过看这个Linux系统的界面还不错,哪个版本啊?
网友回复
回复德良 : Ubuntu,但不是最新的版本!
顶(0) 踩(0) 2013-05-06 10:31:11
回复评论