Различение трубы из файла в Windows - PullRequest
2 голосов
/ 18 мая 2009

В Unix все является файлом, поэтому вы можете использовать функции файлового ввода / вывода с каналами, файлами, сокетами и т. Д. Но в Windows используемый вами API зависит от типа используемого вами устройства ввода / вывода.

У меня вопрос: ДАВАЙТЕ РУЧКУ, как вы определяете, что является базовым типом? Например, у меня есть РУЧКА, которая является либо реальным файлом, либо именованным / анонимным каналом. Я хотел бы знать, можно ли вызывать PeekNamedPipe для этой РУЧКИ.

Ответы [ 2 ]

4 голосов
/ 19 мая 2009

Используйте GetFileType. Проверьте возвращаемое значение FILE_TYPE_PIPE.

http://msdn.microsoft.com/en-us/library/aa364960(VS.85).aspx

0 голосов
/ 19 мая 2009

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

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

...