Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4027889
  • 博文数量: 366
  • 博客积分: 9916
  • 博客等级: 中将
  • 技术积分: 7195
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-29 23:27
个人简介

简单!

文章分类

全部博文(366)

文章存档

2013年(51)

2012年(269)

2011年(46)

分类: C/C++

2012-07-05 17:13:15

       当某一设备拔出,若上层应用希望迅速的检测到,可以采用信号的方式。上层应用将进程的pid号写入文件及注册相应的信号处理函数,底层则在相应的地方发送信号。测试代码如下:

点击(此处)折叠或打开

  1. void test_write_pid(void)
  2. {
  3.     fp = fopen("/var/test.pid", "w+");
  4.     if(fp != NULL)
  5.     {
  6.         fprintf(fp, "%d", getpid());
  7.         fclose(fp);
  8.     }

  9.     return;
  10. }

  11. void test_send_signal(void)
  12. {
  13.     struct file *fp;
  14.     char pid[8];
  15.     struct task_struct *p = NULL;

  16.     fp = filp_open("/var/test.pid", O_RDONLY, 0);
  17.     if (IS_ERR(fp))
  18.      return;

  19.     if (fp->f_op && fp->f_op->read) {
  20.      if (fp->f_op->read(fp, pid, 8, &fp->f_pos) > 0) {
  21.         p = find_task_by_pid(simple_strtoul(pid, NULL, 10));
  22.         if (NULL != p) {
  23.          send_sig(SIGUSR1, p, 0);
  24.         }
  25.      }
  26.     }
  27.     filp_close(fp, NULL);

  28.     return;
  29. }


阅读(1807) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~