Составители:
{
MB("He могу открыть файл");
exit(1);
}
char buf[4096];
unsigned long n;
do
{
unsigned long wct;
if (!ReadFi1e(f, buf, sizeof(buf), &n, NULL))
break;
if (n)
WriteFile(out, buf, n, &wct, NULL);
}
while (n==sizeof(buf)); // Если EOF, это условие не выполняется
CloseHandle(f);
}
void main(int argc, char *argv[])
{
if (argc==1)
{
// утилита cat - Ошибки фактически не обрабатываются
// Любая ошибка вызывает аварийное завершение программы
MB("Usage: cat FILENAME [FILENAME ....]");
exit(9);
}
// Обработать все указанные файлы
while (--argc) docat(*++argv);
exit(0);
}
Вот так происходит работа с файлами на уровне Win32 API. Обычно при обраще-
нии к ReadFile() или WriteFile() работа программного потока приостанавливается до того
момента, когда операция чтения/записи будет завершена.
Благодаря механизмам асинхронного ввода/вывода программа может осуществ-
лять ввод/вывод данных и одновременно с этим выполнять какие-либо другие полезные
действия, например сложные математические вычисления. Следует напомнить, что
асинхронный ввод/вывод - это механизм, позволяющий программе осуществлять обмен
данными с каким-либо устройством ввода/вывода и одновременно с этим выполнять ка-
кую-либо другую полезную работу [1]. Например, программа отдает команду на чтение
данных из файла, а затем, не ожидая завершения чтения данных, приступает к выполне-
нию математических вычислений. Когда данные из файла перемещаются в оперативную
память, программа завершает вычисления и приступает к обработке прочитанных дан-
ных. При этом, это лишь один из множества возможных сценариев использования асин-
хронного ввода/ вывода.
Если вы разрабатываете программу, принимающую данные из нескольких разных
источников, вам также может потребоваться асинхронный ввод/вывод. Предположим,
что вы разрабатываете терминальную программу, которая читает данные как с клавиа-
туры, так и из последовательного порта. По мере поступления данных, программа долж-
на немедленно осуществлять их обработку. В этой ситуации также чрезвычайно удобно
использовать механизмы асинхронного ввода/ вывода.
136
{
MB("He могу открыть файл");
exit(1);
}
char buf[4096];
unsigned long n;
do
{
unsigned long wct;
if (!ReadFi1e(f, buf, sizeof(buf), &n, NULL))
break;
if (n)
WriteFile(out, buf, n, &wct, NULL);
}
while (n==sizeof(buf)); // Если EOF, это условие не выполняется
CloseHandle(f);
}
void main(int argc, char *argv[])
{
if (argc==1)
{
// утилита cat - Ошибки фактически не обрабатываются
// Любая ошибка вызывает аварийное завершение программы
MB("Usage: cat FILENAME [FILENAME ....]");
exit(9);
}
// Обработать все указанные файлы
while (--argc) docat(*++argv);
exit(0);
}
Вот так происходит работа с файлами на уровне Win32 API. Обычно при обраще-
нии к ReadFile() или WriteFile() работа программного потока приостанавливается до того
момента, когда операция чтения/записи будет завершена.
Благодаря механизмам асинхронного ввода/вывода программа может осуществ-
лять ввод/вывод данных и одновременно с этим выполнять какие-либо другие полезные
действия, например сложные математические вычисления. Следует напомнить, что
асинхронный ввод/вывод - это механизм, позволяющий программе осуществлять обмен
данными с каким-либо устройством ввода/вывода и одновременно с этим выполнять ка-
кую-либо другую полезную работу [1]. Например, программа отдает команду на чтение
данных из файла, а затем, не ожидая завершения чтения данных, приступает к выполне-
нию математических вычислений. Когда данные из файла перемещаются в оперативную
память, программа завершает вычисления и приступает к обработке прочитанных дан-
ных. При этом, это лишь один из множества возможных сценариев использования асин-
хронного ввода/ вывода.
Если вы разрабатываете программу, принимающую данные из нескольких разных
источников, вам также может потребоваться асинхронный ввод/вывод. Предположим,
что вы разрабатываете терминальную программу, которая читает данные как с клавиа-
туры, так и из последовательного порта. По мере поступления данных, программа долж-
на немедленно осуществлять их обработку. В этой ситуации также чрезвычайно удобно
использовать механизмы асинхронного ввода/ вывода.
136
Страницы
- « первая
- ‹ предыдущая
- …
- 132
- 133
- 134
- 135
- 136
- …
- следующая ›
- последняя »
