1

sys_open正規のシステムコールだと思いますが、

つまり、接頭辞がsys_.

しかし、straceこれはすべてのsyscallをログに記録することになってopenおり、syscall(プレフィックスなしのバージョン)として出力され、混乱しています...

どれがsyscallですか??

4

2 に答える 2

2

Brian W. Kernighan と Rob Pike の引用、「UNIX プログラミング環境」、44 ページから:

プログラムは、 と呼ばれるシステム コール (カーネル内のサブルーチン) によってファイル内のデータを取得しますread

システム コールは と呼ばreadれ、プログラマーにとって物事を簡単にするために、C 標準ライブラリの対応する関数には同じ名前が付けられています。

一方、という名前sys_readは、少数の人々、つまりカーネルをハックする人々にとってのみ興味深いものです。その名前は、オペレーティング システムの実装の詳細と見なされます。

于 2011-04-04T19:32:25.530 に答える
1

ここでは、CまたはC++について話していると思います。また、関連する言語標準によって「システムコール」として義務付けられているわけでsys_open()もありません。open()ただし、ほとんどの(すべて?)* NIX(Linux、Mac OS X、BSDなどを含む)open()はシステムコールです。

私の知る限り、sys_open()Linuxに固有であり、上のレイヤーとして実装されていopen()ます。

于 2011-04-04T03:31:33.677 に答える