Macos DTrace脚本从不报告写系统调用
我使用以下DTrace脚本来跟踪bash的读写系统调用:Macos DTrace脚本从不报告写系统调用,macos,bash,osx-mountain-lion,system-calls,dtrace,Macos,Bash,Osx Mountain Lion,System Calls,Dtrace,我使用以下DTrace脚本来跟踪bash的读写系统调用: syscall::write:entry, syscall::read:entry /execname == "bash"/ { } 它成功地匹配了2个探测,但无论我键入什么,我只看到读取调用。未报告任何写入调用。当外壳回显到屏幕上时,我正期待收到写呼叫 是脚本错了,还是我对bash的工作方式有错误的假设 我在OSX Mountain Lion下运行请在“写入”后使用通配符。这将列出匹配的探测器: sudo dtrace -l -n
syscall::write:entry,
syscall::read:entry
/execname == "bash"/
{
}
它成功地匹配了2个探测,但无论我键入什么,我只看到读取调用。未报告任何写入调用。当外壳回显到屏幕上时,我正期待收到写呼叫
是脚本错了,还是我对bash的工作方式有错误的假设
我在OSX Mountain Lion下运行请在“写入”后使用通配符。这将列出匹配的探测器:
sudo dtrace -l -n 'syscall::write*:entry'
这可能会使您获得预期的输出:
syscall::write*:entry,
syscall::read*:entry
/execname == "bash"/
{
}
正在使用的调用可能是
write\u nocancel
如果使用逗号单独定义它们,您会看到它们吗?没有太多。苹果发布了一份名为“提及符号变体”的发行说明,其后缀为$NOCANCEL
。这些是库封面函数,但它们包装的系统调用实际上有一个\u nocancel
后缀。不过,它所说的一切都是“内部使用”。我相信他们是亲戚。谢谢!我很惊讶在谷歌上几乎找不到任何提及。