文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C 信号编程

C 信号编程

时间:2010-10-30  来源:luozhiyong131

/********

signal函数

*********/

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

#include <signal.h>

 

void sig_handler(int sig)

{

      switch(sig)

      {

           case 2:

                 printf("Reevied signal:SIGINT\n");

                 break;

           case 3:

                 printf("Reevied signal:SIGQUIT\n");

                 break; 

           default:;

      }

      return; 

}

 

int main()

{

      printf("PID:%d\n",getpid());

      signal(SIGINT,sig_handler);

      signal(SIGQUIT,sig_handler);

      for(;;);

      return 0;

}

 

 

 

/************

sigaction函数

*************/

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

#include <signal.h>

 

void sig_handler(int sig, siginfo_t *info, void *t)

{

      printf("  Reevied signal:%d\n",sig);             

      return; 

}

 

int main()

{

      int status;

      struct sigaction act;

      act.sa_sigaction = sig_handler;

      sigemptyset(&act.sa_mask);

      act.sa_flags = SA_SIGINFO;

      status=sigaction(SIGINT,&act,NULL);

      if(status<0)

      {

           printf("signaction error");

      }

     

      for(;;);

      return 0;

}

 

 

 

/*************************************

**在不同进程间实现信号发送和接收send.c**

**************************************/

 

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

#include <signal.h>

 

int main(int argc, char **argv)

{

      int status;

      pid_t pid;

      union sigval sg;

      if(argc!=2)

      {

           printf("arguments error:\n");

           exit(1);

      }

      pid = atoi(argv[1]);

      sg.sival_init=getpid();

      status = sigqueue(pid,SIGUSR1,sg);

      if(status<0)

           printf("send error\n");

      else

           printf(Done\n);

      return 0;

}

 

 

 

/************************************

**在不同进程间实现信号发送和接收receive.c*

*************************************/

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

#include <signal.h>

 

void sig_handler(int sig, siginfo_t *info, void *t)

{

      printf("  Reevied signal:%d\n",sig); 

      printf("  Reevied message:%d\n",info->si_int);

      return; 

}

 

int main()

{

      int status;

      pid_t pid;

      pid = getpid();

      struct sigaction act;

      act.sa_sigaction = sig_handler;

      sigemptyset(&act.sa_mask);

      act.sa_flags = SA_SIGINFO;

      status=sigaction(SIGUSR1,&act,NULL);

      if(status<0)

      {

           printf("signaction error");

      }

      printf("Recever:\n");

      printf("PID:%d\n",pid);

      for(;;);

      return 0;

}

 

 

 

/************

**alarm定时**

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载