[问题] userspace & kernel space 沟通

楼主: yshihyu (yshihyu)   2016-03-16 21:47:59
https://gist.github.com/anonymous/bb7623c4c2c2b31fe288
因为程式码有点多所以我贴再上面网址里面
我程式是想从 使用者空间的appln process 透过 ioctl 传递 process 的
pid 到 kernel , kernel 再透过 send_sig 函数不断发 SIGUSR2 给用使用者空间的
appln prcoess , 当我不想kernel 再发 SIGUSR2 signal .
我再透过 ioctl 让 kernel 停止发 SIGUSR2
下面是打印出来的log 是正常的
// user space log
PID=6897
Ioctl executed
signal_handler 12, pid=6897
SIGUSR2
signal_handler 12, pid=6897
SIGUSR2
^Cstop_sig=2, pid=6897 // ctrl + c 发往 kernel 让kernel停止发送 SIGUSR2
// kernel log
[ 681.335568] vrmonitor_sig_handler current pid=6898 send to PID=6897
[ 682.339540] vrmonitor_sig_handler current pid=6898 send to PID=6897
[ 682.871588] IOCTL_STOP_SIG send_sig_flag=0 // kernel 收到停止发送
[ 682.871646] Module Released
[ 683.343531] vrmonitor_sig_handler current pid=6898 send to PID=6897
我再一般pc上运行正常 ,
可是再 vmware ubuntu kernel 只发两次 SIGUSR2 , 就打印出 Module Released
下面 log , user space 的 appln prcoess 就莫名其妙结束 , 我还没按 ctrl+c
只是启动 sudo ./appln 这样
[ 681.335568] vrmonitor_sig_handler current pid=6898 send to PID=6897
[ 682.339540] vrmonitor_sig_handler current pid=6898 send to PID=6897
[ 682.871646] Module Released
请问可能是什么原因会有这样怪异现象?
谢谢
作者: ah7675 (阿毛)   2016-03-16 23:16:00
请爱用netlink
作者: leolarrel (真.粽子无双)   2016-03-21 18:43:00
请爱用netlink
作者: impotent (奥井大姊我爱你啊)   2016-03-28 08:54:00
改用netlink

Links booklink

Contact Us: admin [ a t ] ucptt.com