Выбрать главу

• Многочисленные прочерки, особенно, когда они относятся к библиотеке С, встречаются в тех случаях, когда сопоставимые функции или наборы функций отсутствуют. Именно такая ситуация наблюдается, например, для функций управления каталогами.

• В таблицах к главам 7—10 в качестве функций UNIX фигурируют функции потоков POSIX (Pthreads), хотя они и не являются частью UNIX. Кроме того, хотя во многих реализациях UNIX имеются собственные объекты синхронизации, аналогичные событиям, мьютексам и семафорам, мы не пытались отразить их в таблицах.

Как правило, более точная совместимость наблюдается для функций, фигурирующих в начальных главах книги, особенно для функций управления файлами. С переходом к более развитым функциональным возможностям различия между системами становятся все более ощутимыми, и во многих случаях эквивалентные функции библиотеки С отсутствуют. Так, модели безопасности в UNIX и Windows существенно отличаются друг от друга, и поэтому отображенные соотношения между ними являются, в лучшем случае, приближенными.

Указанные функциональные соответствия не являются точными. Между всеми тремя системами имеется множество отличий, как существенных, так и незначительных. Поэтому данные таблицы могут служить лишь ориентиром. Многие из отмеченных отличий отдельно обсуждаются в главах книги.

Главы 2 и 3: управление файлами и каталогами Область 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 Глобальная переменная Обработка ошибок SetLastError errno errno Глобальная переменная Блокирование файлов LockFile fcntl(cmd=F_GETLK,…) - Блокирование файлов LockFileEx fcntl(cmd=F_GETLK,…) - Блокирование файлов UnlockFile fcntl(cmd=F_GETLK,…) - Блокирование файлов UnlockFileEx fcntl(cmd=F_GETLK,…) - Файловая система CloseHandle (в данном случае закрытие дескриптора файла) close* fclose CloseHandle не ограничивается файлами Файловая система CopyFile open; read; write; close fopen; fread; fwrite; fclose Дублирование файла Файловая система CreateFile open*, creat* fopen Открытие/ создание файла Файловая система DeleteFile unlink* remove Удаление файла Файловая система FlushFileBuffers fsynch fflush Запись буферизованных данных в файл Файловая система GetFileAttributes stat*, fstat*, lstat - Файловая система GetFileInformationByHandle stat*, fstat*, lstat - Заполнение структуры информацией о файле Файловая система GetFileSize stat*, fstat*, lstat ftell, fseek Получение размера файла в байтах Файловая система  GetFileTime stat*, fstat*, lstat - Файловая система GetFileType stat*, fstat*, lstat - Определение типа устройства или файла Файловая система GetStdHandle Используйте файловые дескрипторы 0, 1 или 2 Используйте stdin, stdout, stderr Файловая система GetTempFileName Используйте библиотеку С tmpnam Создание уникального имени файла Файловая система GetTempFileName, CreateFile Используйте библиотеку С tmpfile Создание временного файла Файловая система GetTempPath /temp path - Получение пути к каталогу для временных файлов Файловая система MoveFile, MoveFileEx Используйте библиотеку С rename Переименование файла или каталога Файловая система CreateHardLink link, unlink* - Windows не поддерживает ссылки Файловая система - symlink - Создание символической ссылки Файловая система - readlink - Чтение имени в символической ссылке Файловая система Отсутствует; ReadFile возвращает 0 байт Отсутствует; read возвращает 0 байт feof Количество оставшихся до конца файла байтов Файловая система Отсутствует; используйте многократные вызовы ReadFile readv Отсутствует; используйте многократные вызовы freads Фрагментированное чтение Файловая система Отсутствует; используйте многократные вызовы WriteFile writev Отсутствует; используйте многократные вызовы fwrites Запись со слиянием Файловая система ReadFile read fread Чтение данных из файла Файловая система SetEndOfFile chsize* - Файловая система SetFileAttributes fcntl - Файловая система SetFilePointer lseek fseek Установка указателя файла Файловая система SetFilePointer (установка в 0) lseek(0) rewind Файловая система SetFileTime utime* - Файловая система SetStdHandle close, dup*, dup2* или fcntl freopen dup2 или fcntl Файловая система WriteFile write fwrite Запись данных в файл Получение сведений о системе GetDiskFreeSpace - - Получение сведений о системе GetSystemInfo getrusage - Получение сведений о системе GetVersion uname - Получение сведений о системе GetVolumeInformation - - Получение сведений о системе GlobalMemoryStatus getrlimit - Получение сведений о системе Ряд предопределенных констант sysconf, pathconf, fpathconf - Дата и время GetSystemTime Используйте библиотеку С time, gmtime Дата и время См. программу ls (Программа 3.2) Используйте библиотеку С asctime Дата и время CompareFileTime Используйте библиотеку С difftime Сравнение "календарных" значений даты и времени Дата и время FileTimeToLocalFileTime, FileTimeToSystemTime Используйте библиотеку С localtime Дата и время FileTimeToSystemTime Используйте библиотеку С gmtime Дата и время GetLocalTime Используйте библиотеку С time, localtime Дата и время См. программу touch (программа 3.3) Используйте библиотеку С strftime Дата и время SetLocalTime - - Дата и время SetSystemTime - - Дата и время Вычитание значений отметок времени Используйте библиотеку С difftime Дата и время SystemTimeToFileTime Используйте библиотеку С mktime Глава 4: обработка исключений Область Windows UNIX Библиотека С SEH __try–__except Используйте сигналы библиотеки С Используйте сигналы библиотеки С SEH __try–__finally Используйте сигналы библиотеки С Используйте сигналы библиотеки С SEH AbnormalTermination Используйте сигналы библиотеки С Используйте сигналы библиотеки С SEH GetExceptionCode Используйте сигналы библиотеки С Используйте сигналы библиотеки С SEH RaiseException Используйте сигналы библиотеки С signal, raise Сигналы Используйте блок __finally Используйте библиотеку С atexit Сигналы Используйте библиотеку С или TerminateProcess kill raise Сигналы Используйте библиотеку С Используйте библиотеку С signal Сигналы Используйте SEH, VEH sigemptyset - Сигналы Используйте SEH, VEH sigfillset - Сигналы Используйте SEH, VEH sigaddset - Сигналы Используйте SEH, VEH sigdelset - Сигналы Используйте SEH, VEH sigismember - Сигналы Используйте SEH, VEH sigprocmask - Сигналы Используйте SEH, VEH sigpending - Сигналы Используйте SEH, VEH sigaction - Сигналы Используйте SEH, VEH sigsetjmp - Сигналы Используйте SEH, VEH siglongjmp - Сигналы Используйте SEH, VEH sigsuspendf - Сигналы