#!/usr/sbin/dtrace -qs /* wrun.d -- Modified version of daterun.d for the w command */ syscall::write:entry /execname == "w"/ { printf("%s(%d, %s, %d)\n", probefunc, arg0, copyinstr(arg1, arg2), arg2); }
プログラムでは、2引数形式のcopyinstr()
を使用します。write()
の文字列引数はnullで終了しない可能性があるためです:
#chmod +x wrun.d
#./wrun.d
write(1, 12:14:55 up 3:21, 3 users, load average: 0.14, 0.15, 0.18 , 62) write(1, USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT , 69) write(1, guest tty1 :0 08:55 3:20m 11:23 0.17s pam: gdm-passwo , 80) write(1, guest pts/0 :0.0 08:57 7.00s 0.17s 0.03s w m: gdm-passwo , 66) write(1, guest pts/1 :0.0 12:14 7.00s 0.69s 8.65s gnome-terminal , 79) ... ^C