3

我必须通过知道它的 tid 来知道一个线程当前是否正在执行系统调用(例如读/写/等)。有没有办法在 Linux 中做到这一点?

4

1 回答 1

2

这应该列出线程的状态代码

ps -p<pid> -o stat

两个相关的代码是:

D    uninterruptible sleep (usually IO)
S    interruptible sleep (waiting for an event to complete)

编辑:如果您想以编程方式获取确切的系统调用,您可以ptrace按照您的建议和阅读EAX使用,您还应该使用PTRACE_SYSCALL标志让进程在下一个系统调用条目处停止。

于 2012-11-13T16:37:44.993 回答