sys_open
正規のシステムコールだと思いますが、
つまり、接頭辞がsys_
.
しかし、strace
これはすべてのsyscallをログに記録することになってopen
おり、syscall(プレフィックスなしのバージョン)として出力され、混乱しています...
どれがsyscallですか??
sys_open
正規のシステムコールだと思いますが、
つまり、接頭辞がsys_
.
しかし、strace
これはすべてのsyscallをログに記録することになってopen
おり、syscall(プレフィックスなしのバージョン)として出力され、混乱しています...
どれがsyscallですか??
Brian W. Kernighan と Rob Pike の引用、「UNIX プログラミング環境」、44 ページから:
プログラムは、 と呼ばれるシステム コール (カーネル内のサブルーチン) によってファイル内のデータを取得します
read
。
システム コールは と呼ばread
れ、プログラマーにとって物事を簡単にするために、C 標準ライブラリの対応する関数には同じ名前が付けられています。
一方、という名前sys_read
は、少数の人々、つまりカーネルをハックする人々にとってのみ興味深いものです。その名前は、オペレーティング システムの実装の詳細と見なされます。
ここでは、CまたはC++について話していると思います。また、関連する言語標準によって「システムコール」として義務付けられているわけでsys_open()
もありません。open()
ただし、ほとんどの(すべて?)* NIX(Linux、Mac OS X、BSDなどを含む)open()
はシステムコールです。
私の知る限り、sys_open()
Linuxに固有であり、上のレイヤーとして実装されていopen()
ます。