Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1681648
  • 博文数量: 1493
  • 博客积分: 38
  • 博客等级: 民兵
  • 技术积分: 5834
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-19 17:28
文章分类

全部博文(1493)

文章存档

2016年(11)

2015年(38)

2014年(137)

2013年(253)

2012年(1054)

2011年(1)

分类:

2012-07-06 08:41:09

       当某一设备拔出,若上层应用希望迅速的检测到,可以采用信号的方式。上层应用将进程的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. }


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