Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何发送一个";“信号”;从内核模块到用户空间应用程序?_Linux_Module_Kernel_Signals_Interrupt - Fatal编程技术网

Linux 如何发送一个";“信号”;从内核模块到用户空间应用程序?

Linux 如何发送一个";“信号”;从内核模块到用户空间应用程序?,linux,module,kernel,signals,interrupt,Linux,Module,Kernel,Signals,Interrupt,我有一个包含中断处理程序的Linux内核模块,希望在中断处理完成后通知用户空间应用程序。请告诉我,怎么做?使用 Netlink套接字是一种用于传输信息的专用IPC 在内核和用户空间进程之间。它提供全双工 通过标准套接字API在两者之间建立通信链路 用户空间进程和用于内核模块的特殊内核API。 Netlink套接字使用地址族AF_Netlink,与 TCP/IP套接字使用的AF_INET。每个netlink套接字功能都定义其 内核头文件中自己的协议类型包括/linux/netlink.h 您可以

我有一个包含中断处理程序的Linux内核模块,希望在中断处理完成后通知用户空间应用程序。请告诉我,怎么做?

使用

Netlink套接字是一种用于传输信息的专用IPC 在内核和用户空间进程之间。它提供全双工 通过标准套接字API在两者之间建立通信链路 用户空间进程和用于内核模块的特殊内核API。 Netlink套接字使用地址族AF_Netlink,与 TCP/IP套接字使用的AF_INET。每个netlink套接字功能都定义其 内核头文件中自己的协议类型包括/linux/netlink.h

  • 您可以始终使用普通套接字,如UDP或UNIX
  • 您可以通过
    /proc
    /sys
    导出此信息(请参见问题)
  • 您可以使用Netlink(参见问题)

    • 我直接回答这个问题,因为这是谷歌“内核向用户空间发送信号”的最高结果

      我通常使用signal终止用户空间进程,在调用ioctls时检查它的堆栈。通常,以下方法对我有效:

      force_sig(SIGSEGV, current);
      

      我们可以假设你说的是Linux吗?无论哪种方式,请在您的问题中添加相关标记。@OliCharlesworth是的,我们正在谈论Linux,但我的标记已用完。例如,您可以删除“硬件”而改为“Linux”。硬件知识对于回答这个问题并不重要。@chirlu好的,我已经做到了。请让我们返回问题标签对于让正确的人来查看您的问题非常重要。看见答案来了。:-)消息队列或共享内存?您也可以使用信号来访问用户空间:)。。您的内核模块只应该知道需要触发的进程的PID。我已经使用IOCTL向内核模块传递了PID:)。