我是 dtrace 的新手,正在尝试编写一些基本的 dtrace 脚本。我找到了一个在单独的终端上捕获 read(2) 和 write(2) 系统调用的示例,如下所示,
syscall::read:entry,
syscall::write:entry
/pid==4217/
{
}
指定的 pid 号来自其他终端的 pid id。当我看到这个例子时,如果我用 dtrace 运行这个脚本,它应该会显示一些读写系统调用。但我只观察到读系统调用,但没有观察到写系统调用。
因此,如果我理解正确,在我观察到的终端(pid 4217)上,如果我在该终端上键入某些内容,内核将读取它的字符,因此假设会发生读取系统调用。如果我输入“ls”之类的内容并回车,内核将读取并执行它,并将一些输出写入终端,因此编写系统调用假设被调用。但我没有看到任何写入系统调用。这是为什么?