Флаги определяют свойства, которые будут применены при открытии этого файла в это время (давайте назовем это "сессией") - это влияет на то, что вы можете делать с файломпока он открыт (или, точнее, то, что вы можете сделать с дескриптором файла).
Режим определяет свойства файла, если он будет создан как часть процесса открытия -это влияет на то, как каждый может открыть файл в будущем.
Ваш конкретный пример (хотя с правильным open
вместо Open
):
fd = open("foo.txt", O_RDONLY, S_IWOTH);
на самом деле не имеет значения, поскольку файл не будет создан без флага O_CREAT
(a) .
Однако, если бы вы указали O_CREAT
, этовполне приемлемо для создания файла, позволяющего кому-либо записывать в него, но открыть его для этого сеанса в режиме только для чтения.
(a) Некоторые системы имеют другие флаги, которые могут создавать файл при некоторых обстоятельствах.Например, Linux имеет флаг O_TMPFILE
.