/usr/include/unistd.hに「オープン」システムコールがないのはなぜですか? (ただし「閉じる」は)

/usr/include/unistd.hに「オープン」システムコールがないのはなぜですか? (ただし「閉じる」は)

私の理解では開いているそして閉鎖システムコールは非常に関連性があるようです。

  • 両方のプロセスファイル
  • ほとんどのUNIXバージョンで利用可能です(?これらの機能を持たないUNIXはありますか?)

だから私は彼らが発表するものを見つけることを期待しています両方/usr/include/unistd.hヘッダファイルに。しかし、奇妙なことに、そこには「off」だけが宣言されており、「on」は宣言されていません(私の4.17 Linuxカーネルシステムでは)。

省略開いているunistd.h読み取りを確認するシステムコールが表示されます。Open Group 基本仕様 2018年7号版

これは「宣言」の段落で説明されています。

以下は関数として宣言する必要があるか、マクロとして定義できます。機能的なプロトタイプを提供する必要があります。

int access(const char *、int); int chdir(const char *); int chown(const char *,>
int close(int) ; しかし、「開く」はありません。]



その後 - 私は再び奇妙なことに、ファイルに/usr/include/asm/unistd_64.h次の行が含まれています。

#define __NR_open 2

unistd.hがまだ「ファイルを開く」に興味を持っていると思いますか?

ベストアンサー1

背景はあなたに必要なものです

#include <fcntl.h>

とにかく関連フラグを取得するには、名前open()空間を必要以上に汚染しない機会が必要です。

open()このファイルはにある場合はunistd.h必要#include fcntl.hですが、デフォルトでは必要ありません。

unistd_64.hファイルは非公式ベンダー内部インクルードファイルであり、このファイルの内容はPOSIX標準のトピックではありません。

おすすめ記事