straceがsyscall =を表示するのはなぜですか?

straceがsyscall =を表示するのはなぜですか?

システムコールをしてカーネルを再コンパイルしましたが、システムコールを実行するとKilledが返されました。そのため、これを追跡するためにstraceを使用しましたが、次のメッセージが表示されました。 syscall_0x224(0x7ffda7199738, 0x7ffda7199748, 0x55743750a6d0, 0x7f9f20df7d80, 0x7f9f20df7d80, 0x7ffda7199730) = ?

これは何を意味しますか(16進数、疑問符ではありません)?

ベストアンサー1

これは、システムコールが終了し、戻り値がない(できない)ことを意味します。例が提供されています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 +++

おすすめ記事