Это побитовое ИЛИ из двух операндов.В этом случае оба операнда определены в fcntl.h
:
/* File access modes for open() and fcntl(). POSIX Table 6-6. */
#define O_RDONLY 0 /* open(name, O_RDONLY) opens read only */
#define O_WRONLY 1 /* open(name, O_WRONLY) opens write only */
#define O_RDWR 2 /* open(name, O_RDWR) opens read/write */
...
/* File status flags for open() and fcntl(). POSIX Table 6-5. */
#define O_APPEND 02000 /* set append mode */
#define O_NONBLOCK 04000 /* no delay */
Итак O_RDONLY
:
000 000 000 000 (0)
ИЛИ с O_NONBLOCK
:
100 000 000 000 (04000 in octal notation)
В результате получается:
100 000 000 000 (0400)
Не очень захватывающий пример, но это то, что он делает ...