Числовые значения открытых аргументов в Linux

#linux #operating-system

#linux #операционная система

Вопрос:

Я просматриваю руководство по Linux для open функции здесь, но я не могу найти целочисленные значения для различных флагов, таких как O_WRONLY, O_CREAT, O_RDONLY . Есть ли способ найти эту информацию?

Комментарии:

1. Почему вам нужно это знать, а не просто использовать макросы?

2. При импорте заголовков вы можете использовать printf("O_WRONLY is defined as %dn", O_WRONLY); для отображения числового значения. В качестве альтернативы, откройте заголовки и следуйте включениям в определение. Знание числового значения не обязательно для использования этой функции в C.

Ответ №1:

Вот как я нашел определения:

 $ find /usr/include -type f -name '*.h' -exec grep -E '^#define.*O_(WRONLY|RDONLY|RDWR)' {}  
/usr/include/asm-generic/fcntl.h:#define O_RDONLY   00000000
/usr/include/asm-generic/fcntl.h:#define O_WRONLY   00000001
/usr/include/asm-generic/fcntl.h:#define O_RDWR     00000002
/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h:#define O_RDONLY        00
/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h:#define O_WRONLY        01
/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h:#define O_RDWR          02