Есть ли в Windows какой-либо системный порт write () из * nix unistd.h? - PullRequest
1 голос
/ 09 декабря 2010

У меня есть большой код, который был ранее построен для среды Linux, который включает вызов write () из unistd.h.Есть ли какой-либо порт write (), доступный для среды Win32.Я собираюсь построить эту большую базу кода «как есть» в среде Windows (среда MS-VS 2005), не касаясь кода, если это возможно.

Изменение кода для замены вызовов write () на fwrite () было бы утомительным ручным процессом, так как сигнатуры этих двух отличны.

РЕДАКТИРОВАНИЕ: На самом деле многие другие вызовы на основе Unix также не работают в среде Windows - read (), open (), close ()...

Любые указатели были бы полезны.

спасибо.

-AD

Ответы [ 2 ]

1 голос
/ 09 декабря 2010

Среда выполнения Microsoft C имеет _open _read _write и т. Д. Как " низкоуровневый ввод-вывод ».Однако это оболочки совместимости искалеченные , управляемые слоем среды выполнения C и подчиняющиеся ограничениям типа "ограничено _getmaxstdio и не может превышать 2048 ".

Вы можете использовать собственный NT CreateFile ReadFile WriteFile для истинного низкоуровневого ввода-вывода.

0 голосов
/ 09 декабря 2010

Я был бы немного удивлен, если бы они не работали, но если они этого не делают, лучше всего написать небольшую библиотеку слоев переноса, которая реализует их с помощью вызовов Win32API.

Это, несомненно, будет быстрее, чем поиск и замена большого количества кода, а также означает, что ваша основная кодовая база остается неизменной и переносимой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...