我的应用程序前端和后端分别在 java 和 c 上。该接口是通过 C 端的侦听器进程。如果c端出现错误,则对应的为用户服务的监听进程需要down掉。
但在其中一种情况下,听众并没有失望。我已经绞尽脑汁,但我似乎无法破解它。
当我捆绑监听器服务时,这就是我注意到的。
15269900: 57278597: 0.0002: _getpid() = 15269900
15269900: 57278597: 0.0009: _esend(11, 0x090000000B3B6F72, 1, 1, 0x0000000000000000) = 1
15269900: 57278597: kwrite(11, "\0\v\0\0\f\0\0\001\002", 11) = 11
15269900: 57278597: kread(11, "\0\v\0\0\f\0\0\001\001\0".., 8208) = 22
15269900: 57278597: 1.0974: kread(11, "\0\v\0\0\f\0\0\001\002\0".., 8208) (sleeping...)
15269900: 57278597: 4.5260: kread(11, "\0\v\0\0\f\0\0\001\002\0".., 8208) (sleeping...)
它就在这里等着。
此 pid 上的 procstack 显示如下
0x0000000000000000 ????????() + ??
procstack: write(/proc/15269900/ctl): The requested resource is busy.
我已经完成了我的研究,但我仍然无法弄清楚这一点。有人可以帮我为什么这个过程在这里挂起吗?