^file::exec[binary;$stdin[$file]]
G_Z 28.10.2015 00:16
В продолжение
темы о зависании gzip в ожидании данных.
Дело происходит под Win.
Пытаюсь распаковать gz на лету, передав файл в $.stdin и взяв результат в $.stdout.
В качестве распаковшиков пробую 7zip и gzip.
В случае передачи файла архива в text-режиме 7zip не может распаковать его целиком, но получает в потоке ввода и пишет в поток вывода.
Если же передавать в binary-режиме — процесс повисает и не отвечает.
Причём, в диспетчере задача указано: прочитано — 479 байт (размер архива + 1 байт), записано — 3219 байт (точный размер извлечённого файла).
То есть, чтение и запись прошли, но процесс продолжает чего-то ждать, а его в свою очередь ждёт Парсер.
$result[^file::exec[binary;C:\Program Files\7-Zip\7z.exe][
$.stdin[^file::load[binary;/test.xml.gz]]
][e;-si;-so;-tgzip]]
Gzip ведёт себя несколько иначе.
Вне зависимости от режима считывает 479 байт и ждёт, не записывая ничего.
$result[^file::exec[binary;C:\Program Files (x86)\GnuWin32\bin\gzip.exe][
$.stdin[^file::load[binary;/test.xml.gz]]
][-cd]]
Парсер в обоих случаях записывает 479 байт и ждёт.
И 7zip и gzip прекрасно работают в консоли, и принимая, и выдавая файл в поток.
Прошу «помощи зала» в поиске причин.
- ^file::exec[binary;$stdin[$file]], G_Z [M] 28.10.2015 00:16
- Ответ, MoKo 28.10.2015 04:47
- Ответ, G_Z [M] 28.10.2015 15:22
- Ответ, MoKo 28.10.2015 01:18
- Ответ, G_Z [M] 28.10.2015 01:32