Указанные функциональные соответствия не являются точными. Между всеми тремя системами имеется множество отличий, как существенных, так и незначительных. Поэтому данные таблицы могут служить лишь ориентиром. Многие из отмеченных отличий отдельно обсуждаются в главах книги.
Область |
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 |
|
Область |
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 |
- |
Сигналы |
Используйте SEH, VEH |
psignal |
- |
Сигналы |
Используйте SEH, VEH или библиотеку С |
Используйте библиотеку С |
abort |