Почему системные вызовы POSIX mkdir () и rmdir () находятся в разных заголовочных файлах? - PullRequest
0 голосов
/ 13 октября 2018

mkdir () находится в <sys/stat.h>, тогда как rmdir () находится в <unistd.h>.Разве не имело бы смысла иметь их в одном заголовочном файле?

1 Ответ

0 голосов
/ 13 октября 2018

Причина в том, что с mkdir(2) вы указываете разрешения во втором аргументе:

  int mkdir(const char *pathname, mode_t mode);

Эти флаги режима и тип mode_t определены в sys/stat.h (по крайней мере косвенно, включив bits/stat.h и bits/types.h в мою систему), поэтому представляется целесообразным определить там и mkdir ().В противном случае включение unistd.h приведет к ошибке, поскольку тип mode_t там неизвестен.

Напротив, rmdir(2) не принимает никаких аргументов, кроме имени файла, поэтому может оставаться в unistd.h, поскольку других зависимостей нет.

...