Go の Syscall.RawSyscall() と Syscall.Syscall() について
はじめに
Go の Syscall パッケージは、オペレーティング システムとの低レベルの対話を提供します。このパッケージの 2 つの注目すべき関数は、RawSyscall() と Syscall() です。これらは、システム コールを実行するさまざまな方法を提供します。
RawSyscall
RawSyscall() 関数は、次のパラメータを取得して生のシステム コールを取得します。
次の値が返されます:
アセンブリ コード
Darwin/amd64 システムの場合、RawSyscall() のアセンブリ コードは http://golang.org/src/pkg/syscall/asm_darwin_amd64 にあります。 .s.行 61 ~ 80 はシステム コールを実装します。
Zsyscall
Zsyscall は、特定のシステム コールの高性能実装を提供する Syscall のサブモジュールです。 Zsyscall の関数は、Zsyscall.AioRead() のように、文字 a で始まる名前が付けられます。これらは通常の Syscall 関数と同じインターフェイスに従います。
Syscall と RawSyscall の違い
Syscall と RawSyscall はどちらもシステム コールを実行できますが、次のような微妙な違いがあります。
使用シナリオ
カスタム システム コール関数の実装
カスタム システム コール関数を実装するには:
以上がGo の「RawSyscall()」と「Syscall()」は、実行時の対話と使用シナリオの点でどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。