首页 > 其他 > 详细

123

时间:2020-05-21 20:38:14      阅读:53      评论:0      收藏:0      [点我收藏+]

/*************************************************************************
> File Name: hellosignal.c
> Author: 17043226易天儒
> Mail: 1197607972@qq.com
> Created Time: 2020年05月15日 星期五 17时18分37秒
************************************************************************/

include<stdio.h>

include<unistd.h>

int main(){
printf("Hello Signal,I am %d\n",getpid());
while(1){
write(STDOUT_FILENO,"",1);
sleep(10);
}
return 0;
}
2.
/
************************************************************************
> File Name: mykill.c
> Author: 17043226易天儒
> Mail: 1197607972@qq.com
> Created Time: 2020年05月15日 星期五 18时00分37秒
************************************************************************/

include<stdio.h>

include<stdlib.h>

include<sys/types.h>

include<signal.h>

int main(int argc,char argv[]){
if(argc<2)
{
printf("%s arg error.",argv[0]);
exit(1);
}
kill(atoi(argv[1]),SIGKILL);
return 0;
}
3.
/
************************************************************************
> File Name: catchsignal.c
> Author: 17043226易天儒
> Mail: 1197607972@qq.com
> Created Time: 2020年05月15日 星期五 18时16分20秒
************************************************************************/

include<unistd.h>

include<signal.h>

include<stdio.h>

include<stdlib.h>

include<string.h>

include<errno.h>

void sighandler(int sig){
switch(sig){
case SIGUSR1://10
printf("hello SIGUSR1\n");break;
case SIGUSR2://12
printf("hello SIGUSR2\n");break;
case SIGINT://2 CTRL+C
printf("休想干掉我!\n");break;
case SIGTSTP://20 CTRL+Z
printf("不要停止我!\n");break;
case SIGQUIT://3 CTRL+\ //
printf("就是不退出!\n");break;
case SIGSEGV://11
printf("额!程序出bug了!\n");break;
default:
printf("hello,who are you %d?\n",sig);
}
sleep(2);
}
int main(){
printf("I‘m %d\n",getpid());
if(SIG_ERR == signal(SIGUSR1,sighandler)){
perror("signal SIGUSR1");
}
if(SIG_ERR == signal(SIGUSR2,sighandler)){
perror("signal SIGUSR2");
}
if(SIG_ERR == signal(SIGINT,sighandler)){
perror("signal SIGINT");
}
if(SIG_ERR == signal(SIGTSTP,sighandler)){
perror("signal SIGTSTP");
}
if(SIG_ERR == signal(SIGQUIT,sighandler)){
perror("signal SIGQUIT");
}
if(SIG_ERR == signal(SIGSEGV,sighandler)){
perror("signal SIGSEGV");
}
while(1){
write(STDOUT_FILENO,".",1);
sleep(10);
}
return 0;
}
4.
/*************************************************************************
> File Name: alarm_test.c
> Author: 17043226易天儒
> Mail: 1197607972@qq.com
> Created Time: 2020年05月15日 星期五 20时12分16秒
************************************************************************/

include<stdio.h>

include<stdlib.h>

include<unistd.h>

int main(){
alarm(1);
while(1)
{
printf("process will finish!\n");
}
return 0;
}
5.
/*************************************************************************
> File Name: myalarm.c
> Author: 17043226易天儒
> Mail: 1197607972@qq.com
> Created Time: 2020年05月15日 星期五 20时18分39秒
************************************************************************/

include<stdio.h>

include<signal.h>

include<unistd.h>

void handler(int sig){
if(sig == SIGALRM) printf("Bomb!!!!!!!!\n");
}
int main(){
if(SIG_ERR == signal(SIGALRM,handler)){
perror("signal SIGALRM");
}
unsigned int remain = 0;
remain = alarm(5);
printf("the previous alarm remain %d seconds\n",remain);
sleep(3);
remain = alarm(3);
printf("the previous alarm remain %d seconds\n",remain);
while(1){
write(STDOUT_FILENO,".",1);
pause();
}
}
6.
/*************************************************************************
> File Name: mysetitimer.c
> Author: 17043226易天儒
> Mail: 1197607972@qq.com
> Created Time: 2020年05月15日 星期五 20时28分11秒
************************************************************************/

include<stdio.h>

include<stdlib.h>

include<sys/time.h>

include<error.h>

unsigned int my_alarm(unsigned int sec){
struct itimerval it,oldit;
int ret;
it.it_value.tv_sec=sec;
it.it_value.tv_usec=0;
it.it_interval.tv_sec=0;
it.it_interval.tv_usec=0;
ret=setitimer(ITIMER_REAL,&it,&oldit);
if(ret==-1);{
perror("setitimer()");
exit(1);
}
return oldit.it_value.tv_sec;
}
int main(){
my_alarm(1);
while(1);{
printf("process will finish!\n");
}
return 0;
}
7.
/*************************************************************************
> File Name: mysigset.c
> Author: 17043226易天儒
> Mail: 1197607972@qq.com
> Created Time: 2020年05月15日 星期五 20时44分44秒
************************************************************************/

include<stdio.h>

include<signal.h>

include<stdio.h>

void printsigset(const sigset_t set){
int i;
for(i=1;i<=64;i++){
if(i==33)
putchar(‘ ‘);
if(sigismember(set,i) == 1)
putchar(‘1‘);
else
putchar(‘0‘);
}
puts("");
}
int main(){
sigset_t st;
printf("1. create set\n");
printsigset(&st);
printf("\n2.vertify sigset_t is a 64-bit integer\n");
unsigned int test[2]={0xf0f0f0f0,0xf0f0f0f0};
printsigset((sigset_t
)test);
//fill set
printf("\n3.fill set\n");
sigfillset(&st);
printsigset(&st);
//empty set
printf("n4.empty set\n");
sigemptyset(&st);
printsigset(&st);
//add sig
printf("\n5.add SIGHUP(1),SIGINT(2),SIGKILL(9),SIGSYS(31),SIGRTMIN(34) and SIGRTMAX(64) to set\n ");
sigaddset(&st,SIGHUP);
sigaddset(&st,SIGINT);
sigaddset(&st,SIGKILL);
sigaddset(&st,SIGSYS);
sigaddset(&st,SIGRTMIN);
sigaddset(&st,SIGRTMAX);
printsigset(&st);
//delete sig
printf("\n6.delete SIGKILL from set\n");
sigdelset(&st,SIGKILL);
printsigset(&st);
//is member
printf("\n");
if(sigismember(&st,SIGKILL)){
printf("SIGKILL is member\n");
}
if(sigismember(&st,SIGINT)){
printf("SIGINT is member\n");
}
return 0;
}
8.
/*************************************************************************
> File Name: sigblock.c
> Author: 17043226易天儒
> Mail: 1197607972@qq.com
> Created Time: 2020年05月15日 星期五 23时09分34秒
************************************************************************/

include<stdio.h>

include<unistd.h>

include<signal.h>

include<stdlib.h>

void printsigset(const sigset_t set){
int i;
for(i=1;i<=64;i++){
if(i33)
putchar(‘ ‘);
if(sigismember(set,i) == 1)
putchar(‘1‘);
else
putchar(‘0‘);
}
puts("");
}
void handler(int sig){
if(sig == SIGINT)
printf("hello SIGINT\n");
if(sig == SIGQUIT)
printf("hello SIGQUIT\n");
}
int main(){
printf("I‘m %d\n",getpid());
sigset_t st,oldst;
sigemptyset(&st);
sigaddset(&st,SIGINT);
sigaddset(&st,SIGTSTP);
sigprocmask(SIG_BLOCK,&st,&oldst);
printf("new set:");
printsigset(&st);
printf("old set:");
printsigset(&oldst);
if(SIG_ERR == signal(SIGINT,handler)){
perror("signal SIGQUIT");
return 1;
}
if(SIG_ERR == signal(SIGQUIT,handler)){
perror("signal SIGQUIT");
return 1;
}
puts("");
int n=0;
while(1){
sigpending(&st);
printsigset(&st);
puts("");
sleep(1);
if(n
10){
sigset_t tmp;
sigemptyset(&tmp);
sigaddset(&tmp,SIGINT);
sigprocmask(SIG_UNBLOCK,&tmp,NULL);
}
++n;
}
return 0;
}
9.
/
************************************************************************
> File Name: sigaction.c
> Author: 17043226易天儒
> Mail: 1197607972@qq.com
> Created Time: 2020年05月15日 星期五 22时44分34秒
************************************************************************/

include<stdio.h>

include<signal.h>

include<unistd.h>

void printsigset(const sigset_t *set){
int i;
for(i=1;i<=64;i++){
if(i33)
putchar(‘ ‘);
if(sigismember(set,i)
i)
putchar(‘1‘);
else
putchar(‘0‘);
}
puts("");
}
void handler(int sig){
if(sig == SIGTSTP)
printf("hello SIGTSTP\n");
if(sig == SIGINT)
printf("hello SIGINT\n");
sleep(5);
sigset_t st;
sigpending(&st);
printsigset(&st);
}
int main(){
printf("I‘m %d\n",getpid());
struct sigaction act,oldact;
act.sa_handler=handler;
sigemptyset(&act.sa_mask);
sigaddset(&act.sa_mask,SIGINT);
act.sa_flags=0;
sigaction(SIGTSTP,&act,&oldact);
sigaction(SIGINT,&act,&oldact);
while(1){
write(STDOUT_FILENO,".",1);
pause();
}
return 0;
}

123

原文:https://www.cnblogs.com/qq1105676570/p/12933338.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!