Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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);


Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог