システムコールを実行してカーネルを再コンパイルしましたが、システムコールを実行すると、Killedが返されました。そこで、それをトレースするために、次のメッセージを表示するstraceを使用しました:syscall_0x224(0x7ffda7199738, 0x7ffda7199748, 0x55743750a6d0, 0x7f9f20df7d80, 0x7f9f20df7d80, 0x7ffda7199730) = ?
これはどういう意味ですか(ヘックス、疑問符ではありません)?
これは、システムコールが終了し、値を返さなかった(返さなかった)ことを意味します。例を strace
マニュアル に示します。
Interruption of a (restartable) system call by a signal delivery is
processed differently as kernel terminates the system call and also
arranges its immediate reexecution after the signal handler
completes.
read(0, 0x7ffff72cf5cf, 1) = ? ERESTARTSYS (To be restarted)
システムコールのように、ここのread
は終了し、戻り値がないようです。 (システムコールとは異なり、ここのread
は再実行がスケジュールされていました。)
返されない他のシステムコール(例:exit_group
)にも、?
が表示されます。
~ strace -e exit_group /bin/true
exit_group(0) = ?
+++ exited with 0 +++