Linux下,使用C/C++编写的一个简单的信号处理例程


// main.c file

#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>

// linux header file
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>

//
void MySignalAction(int nSIG)
{
 // 信号处理例程,其中dunno将会得到信号的值 SIGUSR1
 switch(nSIG)
 {
 case SIGUSR1:
  cout<<"Receiveed SIGUSR1 signal!/n"<<nSIG <<endl;
  break;

 case SIGUSR2:
  cout<<"Receiveed SIGUSR2 signal.../n" <<nSIG <<endl;
  break;

 case SIGINT:
  cout<<"Receiveed SIGINT signal.../n" <<nSIG <<endl;
  break;

 case SIGQUIT:
  cout<<"Receiveed SIGUP signal.../n" <<nSIG <<endl;
  break;

 default:
  cout<<"Receiveed unknown a signal !/n Signal ID: " <<nSIG
   <<endl ;
 }
 cout<< "Leave MySignalAction Function!/n";
}

int main()
{
 pid_t nPID = 0;
 nPID = getpid();
 cout <<"/n------------------------------------/n";
 cout <<"The process id is : " <<nPID
   <<endl <<endl;

 cout <<"------------------------------------/n";

 // test signal
 // 下面设置三个信号的处理方法
 signal(SIGUSR1, MySignalAction);
 signal(SIGUSR2, MySignalAction);
 signal(SIGINT, MySignalAction);
 signal(SIGQUIT, MySignalAction);

 for(bool bShow = true ; ; )
 {
  if(bShow)
  {
   cout<< "进入For loop。/n";
   bShow = false;
  }
  // 挂起进程
  pause();
 }
 cout<< "Process exit!/n";
 return 0;
}

// -----------------------------------------------------------------------------------

#Makefile
#

obj = main  main.o

main: main.o
 g++ -o main  main.o


main.o: main.c
 g++ -c   main.c


.PHONY: clean
clean:
 -rm $(obj)

#end file

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值