Причина в том, что с 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
, поскольку других зависимостей нет.