CodeNet / Языки программирования / C / C++ / Linux/Unix / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
sopen
SOPEN #include <fentl.h> #include <sys\types.h> #include <sys\stat.h> #include <sharc.h> #include <io.h> требуется только для объявления функции int sopen(pathname,oflag,shflag{,pmode]); char *pathname; path-имя файла int oflag; тип разрешенных операций int shflag; разрешенный тип разделения int pmode; разрешенный тип доступа Описание. Функция sopen открывает файл, заданный по path-имени, и подготавливает его к последующему разделенному чтению или записи, что определяется значением oflag или shflag. Oflag является целым выражением, состоящим из комбинации одной или нескольких следую- щих манифестных констант, объявленных в <fcntl.h>. Когда задана более чем одна манифестная константа, тогда они объединяются при помощи оператора ИЛИ(:). OFLAG ЗНАЧЕНИЕ O_APPEND Перед каждой операцией записи перемещает указатеь на файл в конец файла. O_CREAT Новый файл создан и открыт для записи; это не эффективно, если существует файл, определяемый по path-имени. O_EXCL Возвращается значение ошибки, если существует файл, определяемый по path- имени. Используется вместе с O_CREATE. O_RDONLY Файл открыт только для чтения, если задан этот флаг, также может быть вы- бран флаг O_RDWR или O_WRONLY. O_RDWR Файл открыт одновременно для чтения и записи; если задается этот флаг, то может быть выбран флаг O_RDONLY или O_WRONLY. O_TRUNC Существующий файл открыт и усечен к длине 0; этот файл должен иметь разре- шение на запись. Содержимое файла уничтожается. O_WRONLY Файл открыт только для чтения; если задан этот флаг, должен быть задан флаг O_RDONLY или O_RDWR. O_BINARY Файл открыт в двоичном (не транслиро- ванном) режиме. (См. описание двоич- ного режима у функции fopen). O_TEXT Файл открыт в текстовом (транслирован- ном) режиме. (См. описание тексто- вого режима у функции fopen). Замечание: O_TRUNC полностью уничтожает содержимое сущест- вующего файла, поэтому нужно внимательно использовать эту конс- танту. Аргумент shflag является константным выражением, состоящим из следующих манифестных констант, объявленных в <share.h>. Под- робно информация о режиме разделения приведена в руководстве по MS DOS. shflag Значение SH_COMPAT устанавливается режим совместимости SH_DENYRW доступ по чтению и записи в файле не разрешен SH_DENYWR доступ по записи в файле не разрешен SH_DENYRD доступ по чтению в файле не разрешен SH_DENYNO доступ по чтению и записи разрешен Аргумент pmode требуется только тогда, когда определена константа 0_CREAT. Если файл не существует, pmode также определя- ет типы доступа для файла, которые устанавливаются во время пер- вого закрытия нового файла. В противном случае аргумент pmode иг- норируется. Аргумент pmode является целым выражением, содержащим одну или больше манифестных констант S_IWRITE и S_IREAD, объяв- ленных в <sys\stat.h>. Когда задаются обе константы, они объединя- ются оператором ИЛИ(!). Значение аргумента pmode приведено ниже. КОНСТАНТА ЕЕ СМЫСЛОВОЕ ЗНАЧЕНИЕ S_IWRITE разрешает запись S_IREAD разрешает чтение S_IREAD:S_IWRITE разрешают чтение и запись Если запись не разрешена, файл предназначен только для чте- ния. В MS DOS все файлы открыты для чтения, разрешение по записи не задается. Поэтому модели S_IWRITE и S_IREAD: S_IWRITE являются эквивалентными. Перед установкой разрешения функция sopen прикладывает те- кущую маску файла к pmode (см. umask). Возвращаемое значение. Функция sopen возвращает handle-р на открытый файл. Возвра- щаемое значение -1 указывает на ошибку; errno устанавливается в одно из следующих значений: ЗНАЧЕНИЕ ЕГО СМЫСЛ EACCES Заданное path-имя является директорием или сделана попытка записать в файл, открытый только для чтения, или возникло нарушение в режиме разделения. (Версии MS DOS 3.0 и старше). EINVAL Командный файл SHARE.COM не инстоллиро- ван. EEXIST Флаги O_CREAT и O_EXCL определены, но названный файл всегда существует. EMFILE Другие handle-ры файла не доступны, т.к. много открытых файлов. ENOENT Файл или path-имя не найдено. См.также close, create, fopen, open, umask. Замечание: Функция sopen используется в версиях 3.0 MS DOS и старших. В ранних версиях MS DOS аргумент shflag игнорируется. Режимы разделения файлов работают неверно с буферизованными файлами, поэтому fdopen не используется для связи потока и файла, открытого к разделению или закрытию. Пример: #include <fcntl.h> #include<sys\types.h> #include<sys\stat.h> #include<share.h> #include<io.h> extern unsigned char _osmajor; int fh; /* Перед вызовом sopen используется переменная _osmajor для проверки номера версии MS DOS . */. if (_osmajor >=3) fh = sopen ("data", O_RDWR:O_BINARY, SH_DENYRW); else fh = open ("data", O_RDWR: O_BINARY);