【发布时间】:2021-11-20 09:52:48
【问题描述】:
我想编写一个应用程序(用 C 语言,可执行并从命令行启动它),它基本上监视用户空间中正在进行的系统调用。您可以将其视为过滤器。如果进行调用的进程感兴趣,请存储正在进行系统调用的事实,否则什么也不做。如果它们是由某个特定进程创建的,则需要存储哪个进程以及进行了哪些系统调用。有什么办法可以做到这一点?这可以从用户空间实现还是我应该编写某种驱动程序?
编辑 1:
该应用程序不会使用任何 GUI。我希望它通过命令行启动(作为可执行文件)并等待该 cmd 中的停止信号。此外,如果它应该监视用户空间中的所有进程,则接收要监视的进程的 PID 或“全部”。我希望它收集有关应用程序的数据,包括它们正在制作的 sys 调用、哪些参数并存储该信息,以便与不是本问题对象的其他应用程序一起处理它。
编辑 2:
不,我无法重新编译受监控的应用程序。例如,我想监控 Spotify、Chrome 或其他任何东西。也许我把它们称为应用程序是错误的,我想监视在用户空间中运行的进程。
【问题讨论】:
-
你熟悉
strace吗? -
你为什么要问?如果你的仪器不完美会怎样?
标签: c linux linux-kernel linux-device-driver