Харт Джонсон М.
Шрифт:
• Разделение функций символом точки с запятой указывает на то, что эмуляция функции Windows достигается за счет последовательного использования этих функций. Так, функции CreateProcess соответствуют функции fork; exec.
• Подчеркивание имени элемента указывает на глобальную переменную, например errno.
• В некоторых случаях UNIX-эквивалент указывается в обобщенной форме с использованием такой, например, терминологии, как "функции терминального ввода/вывода" в случае Windows-функции AllocConsole. Часто приводится только соответствующий простой комментарий наподобие "Используйте библиотеку С", как это сделано в случае функции GetTempFileName. В других случаях ситуация обращается. Так, для функций управления сигналами в UNIX (функция sigaddset и подобные ей) в столбце "Windows" содержатся записи "Используйте SEH, VEH", означающие, что для обеспечения желаемого поведения программы программист должен установить структурные или векторные обработчики исключений и функции фильтров. В отличии от UNIX, группы процессов в Windows не поддерживаются, и в подобных случаях в столбце "Windows" ставится прочерк, что, впрочем, не помешало нам эмулировать отношения между процессами при управлении заданиями в главе 6.
• Многочисленные прочерки, особенно, когда они относятся к библиотеке С, встречаются в тех случаях, когда сопоставимые функции или наборы функций отсутствуют. Именно такая ситуация наблюдается, например, для функций управления каталогами.
• В таблицах к главам 7—10 в качестве функций UNIX фигурируют функции потоков POSIX (Pthreads), хотя они и не являются частью UNIX. Кроме того, хотя во многих реализациях UNIX имеются собственные объекты синхронизации, аналогичные событиям, мьютексам и семафорам, мы не пытались отразить их в таблицах.
Как правило, более точная совместимость наблюдается для функций, фигурирующих в начальных главах книги, особенно для функций управления файлами. С переходом к более развитым функциональным возможностям различия между системами становятся все более ощутимыми, и во многих случаях эквивалентные функции библиотеки С отсутствуют. Так, модели безопасности в UNIX и Windows существенно отличаются друг от друга, и поэтому отображенные соотношения между ними являются, в лучшем случае, приближенными.
Указанные функциональные соответствия не являются точными. Между всеми тремя системами имеется множество отличий, как существенных, так и незначительных. Поэтому данные таблицы могут служить лишь ориентиром. Многие из отмеченных отличий отдельно обсуждаются в главах книги.
Область | Windows | UNIX | Библиотека С | Примечания |
---|---|---|---|---|
Консольный ввод/вывод | AllocConsole | Терминальный ввод/вывод | – | |
Консольный ввод/вывод | FreeConsole | Терминальный ввод/вывод | – | |
Консольный ввод/вывод | ReadConsole | read | getc, scanf, gets | |
Консольный ввод/вывод | SetConsoleMode | ioctl | – | |
Консольный ввод/вывод | WriteConsole | write | putc, printf, puts | |
Управление каталогами | CreateDirectory | mkdir* | – | Создание нового каталога |
Управление каталогами | FindClose | closedir* | – | Закрытие дескриптора поиска |
Управление каталогами | FindFirstFile | opendir*, readdir* | – | Поиск первого файла, соответствующего шаблону |
Управление каталогами | FindNextFile | readdir* | – | Поиск следующих файлов, соответствующих шаблону |
Управление каталогами | GetCurrentDirectory | getcwd* | – | |
Управление каталогами | GetFullPathName | – | – | |
Управление каталогами | GetSystemDirectory | Известные пути доступа | – | |
Управление каталогами | RemoveDirectory | rmdir, unlink* | remove | |
Управление каталогами | SearchPath | Используйте opendir, readdir | – | Поиск указанного файла по указанному пути |
Управление каталогами | SetCurrentDirectory | chdir*, fchdir | – | Смена рабочего каталога |
Обработка ошибок | FormatMessage | strerror | perror | |
Обработка ошибок | GetLastError | errno | errno | Глобальная переменная |