Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

dup

 
 Функция            Дублирует дескриптор файла.
 
 
 
 Синтаксис          #include<io.h>
 
                    int dup(int handle);
 
 
 
 Файл, содержащий   io.h
 
 прототип
 
 
 
 Описание           Функция dup возвращает дескриптор файла, который
 
                    по следующим  позициям  совпадает  с   оригинальным
 
                    дескриптором:
 
 
 
                    - Тот же самый открываемый файл или устройство.
 
 
 
                    - Тот  же  самый  адресный указатель файла (то есть
 
                      изменение одного адресного указателя  приводит  к
 
                      изменению другого).
 
 
 
                    - Тот  же  самый  метод  доступа  (чтение,  запись,
 
                      чтение/запись).
 
 
 
                    Переменная handle  получает  значение  при   вызове
 
                    функций creat,_creat,_open, open, dup, dup2.
 
 
 
 Возвращаемое       При успешном завершении функция dup возвращает це-
 
 значение           лое неотрицательное число, обозначающее соответст-
 
                    вующий дескриптор файла; в противном случае функция
 
                    dup возвращает значение -1.
 
 
 
                    При возникновении  ошибки   глобальная   переменная
 
                    errno получает одно из следующих значений:
 
 
 
                      EMFILE - Слишком много открытых файлов.
 
                      EBADF  - Неверный номер файла.
 
 
 
 Переносимость      Функция dup поддерживается в системах UNIX.
 
 
 
 Смотрите также     _close, close, _creat, creat, creatnew, creattemp,
 
                    dup2, fopen, _open, open.
 
 
 
 Пример:
 
 
 
 #include<string.h>
 
 #include<stdio.h>
 
 #include<conio.h>
 
 #include<io.h>
 
 
 
 void flash(FILE *stream);
 
 
 
 int main(void)
 
 {
 
    FILE *fp;
 
    char msg[] = "Тестовый пример";
 
    /* создание файла */
 
    fp = fopen("DUMMY.FIL,"w");
 
    if(fp)
 
    {
 
       /* записать в файл данные */
 
       fwrite(msg,strlen(msg),1,fp);
 
       clrscr();
 
       printf(" Для сброса буферов файла на диск нажмите клавишу ");
 
       getch();
 
       /* Сброс буферов файда на диск без его закрытия */
 
       flush(fp);
 
       printf("Буфера записаны, для завершения нажмите клавишу.");
 
       getch();
 
    }
 
    else
 
    {
 
       printf("Ошибка при открытии файла\n");
 
    }
 
    return 0;
 
 }
 
 void flash(FILE *stream)
 
 {
 
    int duphandle;
 
    /* сброс внутреннего буфера TC */
 
    fflash(stream);
 
    /* сдублировать дескриптор файла */
 
    duphandle = dup(fileno(stream));
 
    /* закрыть второй дескриптор, для сброса внутренних буферов DOS */
 
    close(duphandle);
 
 }
 
 
 
 ----------------------------------------------------------------------
 
 dup2
 
 Функция            Дублирует дескриптор файла.
 
 
 
 Синтаксис          #include<io.h>
 
                    int dup2(int oldhandle, int newhandle);
 
 
 
 Файл, содержащий   io.h
 
 прототип
 
 
 
 Описание           Функция dup2 возвращают дескриптор файла, который
 
                    по следующим   позициям  совпадает  с  оригинальным
 
                    дескриптором:
 
 
 
                    - Тот же самый открываемый файл или устройство.
 
 
 
                    - Тот же самый адресный указатель  файла  (то  есть
 
                      изменение одного  адресного  указателя приводит к
 
                      изменению другого).
 
 
 
                    - Тот  же  самый  метод  доступа  (чтение,  запись,
 
                      чтение/запись).
 
 
 
                    dup2 создает    новый   дескриптор   со   значением
 
                    newhandle  Если  файл  связанный   с   дескриптором
 
                    newhandle   открыт,   то   при   вызове   dup2   он
 
                    закрывается.
 
 
 
                    Переменные newhandle и oldhandle - это  дескрипторы
 
                    файлов,  и  получают  значения  при  вызове функций
 
                    creat,_creat,_open, open, dup, dup2.
 
 
 
 Возвращаемое       При успешном завершении функция dup2 возвращает 0,
 
 значение           в противном случае функция dup2 возвращает значение
 
                    -1.
 
 
 
                    При возникновении  ошибки   глобальная   переменная
 
                    errno получает одно из следующих значений:
 
 
 
                      EMFILE - Слишком много открытых файлов.
 
                      EBADF  - Неверный номер файла.
 
 
 
 Переносимость      Функция dup поддерживается на системах UNIX, кроме
 
                    System III.
 
 
 
 Смотрите также     _close, close, _creat, creat, creatnew, creattemp,
 
                    dup2, fopen, _open, open.
 
 
 
 Пример:
 
 
 
 #include<sys\stat.h>
 
 #include<string.h>
 
 #include<fcntl.h>
 
 #include<io.h>
 
 #include<stdio.h>
 
 #define STDOUT 1
 
 
 
 int main(void)
 
 {
 
    int fptr,oldstdout;
 
    char msg[] = "Тестовый пример";
 
    /* создание файла */
 
    fptr = open("DUMMY.FIL",O_CREAT|O_RDWR,S_IREAD|S_IWRITE);
 
    if(fptr)
 
    {
 
       /* создать дополнительный дескриптор для stdout */
 
       oldstdout = dup(STDOUT);
 
       /* перенаправить стандартный вывод в файл, путем
 
          дублирования его дескриптора */
 
       dup2(fptr,STDOUT);
 
       /* закрыть файл */
 
       close(fptr);
 
       /* было перенаправлено в DUMMY.FIL */
 
       write(STDOUT,msg,strlen(msg));
 
       /* восстановить исходный дескриптор stdout */
 
       dup2(oldstdout,STDOUT);
 
       /* закрыть второй дескриптор stdout */
 
       close(oldstdout);
 
    }
 
    else
 
    {
 
       printf("Ошибка при открытии файла. \n");
 
    }
 
    return 0;
 
 }

<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS