我必须知道一个线程是否正在执行一个系统调用(例如读/写等)知道它的tid。 有没有办法在Linux中做到这一点?
这应该列出线程的状态码
ps -p<pid> -o stat
这两个相关的代码是:
D uninterruptible sleep (usually IO) S interruptible sleep (waiting for an event to complete)
编辑:如果你想以编程的方式得到确切的系统调用,你可以按照你的建议使用ptrace
并且读取EAX
,你也应该使用PTRACE_SYSCALL
标志来让进程在下次系统调用时停止。