12

open()(man 2 open)システムコールには2つのバージョンがあることを発見しました。

   int open(const char *pathname, int flags);
   int open(const char *pathname, int flags, mode_t mode);

実際、1つのCファイルでどちらかを使用でき、両方が機能します。標準Cはこれをどのように達成できますか?

4

2 に答える 2

9

実際、これは C++ スタイルの関数オーバーロードではありません。可変長であることだけですopen()

int open(const char *fname, int flags, ...);

そして、「フラグ」がそれを必要とする場合にのみ、3 番目の引数を探します。

于 2013-03-01T05:57:10.650 に答える
5

可変引数関数として実行できます。

の POSIX ドキュメントでopenは、次のように指定されています。

int open(const char *path, int oflag, ...);
于 2013-03-01T05:56:28.440 に答える