有没有人尝试创建进程间通信的日志文件?有人可以就实现这一目标的最佳方法给我一些建议吗?
问问题
727 次
3 回答
2
这个问题不是很清楚,评论使它不太清楚,但无论如何......
首先要尝试的两件事是ipcs和strace -e trace=ipc。
于 2011-03-17T21:26:34.277 回答
1
与内核驱动程序的通信可以采用多种形式。通常有一个特殊的设备文件用于通信,或者可以有一个特殊的套接字类型,如 NETLINK。如果幸运的话,有一个字符设备,其中 read() 和 write() 是唯一的交互方式 - 如果是这种情况,那么这些调用很容易被各种方法拦截。如果你运气不好,很多事情都是用 ioctl 或者更难的东西来完成的。
然而,在使用内核驱动程序进行通信的程序上运行“strace”可以揭示它所做的一切——尽管如果程序恰好有用于通信的库,“ltrace”可能更具可读性。通过将参数调整为“strace”,您可能会得到一个只包含您需要的信息的转储:
- 首先,只关注调用并尝试找出内核通信的方式
- 然后,将过滤器添加到 strace 调用以仅记录内核通信调用
- 最后,确保 strace 记录所有调用的完整字符串,这样您就不必处理截断的数据
指向 IPC 调试的答案可能不相关,因为与内核的通信几乎与 IPC 无关(至少与不同的 UNIX IPC 设施无关)。
于 2011-03-19T22:34:00.970 回答