1

В проекте, над которым я работаю, у меня есть два процесса Windows 7, взаимодействующих друг с другом:

  • процесс A - сторонний сервис с закрытым исходным кодом, который загружает файлы с жесткого диска
  • процесс B - внутренний процесс, который создает эти файлы и записывает их на жесткий диск

Текущая настройка работает, как и ожидалось, однако она нарушает одно из бизнес-требований - нам не разрешено создавать временные файлы при обработке данных.

В Linux я мог создать "файл канала" TMP_FILE с mkfifo и использовать его в качестве буфера между этими процессами вместо записи в файловую систему. Когда дело доходит до Windows - я полностью потерян.

Вопрос:

В Windows 7, как я могу выполнить требование не создавать временные файлы на диске, когда процесс, который я не могу изменить, может читать только из файлов?

Дополнительная информация:

  • процесс A получает XML-сообщения с именами файлов для обработки
  • процесс B является только прототипом и может быть изменен любым необходимым способом
  • исходные данные отправляются через SCP с сервера Linux и принимаются процессом B, протокол может быть изменен, если это поможет

1 ответ1

1

Windows-эквивалент того, что вы запрашиваете, называется именованным каналом

Именованные каналы не могут быть смонтированы в обычной файловой системе, в отличие от Unix. Также, в отличие от своих аналогов в Unix, именованные каналы являются энергозависимыми (удаляются после закрытия последней ссылки на них). Каждый канал помещается в корневой каталог файловой системы именованного канала (NPFS), смонтированный по специальному пути \\.\pipe\ Pipe \(то есть канал с именем "foo" будет иметь полный путь \\.\pipe\foo). Анонимные каналы, используемые в конвейере, на самом деле именуются каналами со случайным именем.

Документацию по именованным каналам можно найти на MSDN

Как на самом деле реализовать это было бы за пределами области применения SuperUser, но есть примеры переполнения стека


В качестве альтернативы, в соответствии с моим комментарием выше, если вы хотите скорость оперативной памяти, но по какой-либо причине хотите "настоящую файловую систему", есть также вариант использования Ramdisk. В зависимости от количества и размера файлов есть Dataram Ramdisk или его фирменный дополнительный продукт AMD Radeon Ramdisk. Я считаю, что они ограничены 2 ГБ в бесплатных версиях.

В Википедии имеется достаточно полный список программного обеспечения Ramdisk.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .