O_CREAT requires fcntl.h