Вызов Lwt_process.pread_lines несколько раз - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь использовать Lwt_process.pread_lines, чтобы получить вывод нескольких команд. В моем Lwt_main.run я вызываю его один раз и начинаю обрабатывать каждую строку вывода отдельно, хотя Lwt_stream.map, который хорошо работает.

В этой обработке, хотя, если я вызываю другой Lwt_process.pread_lines, это, кажется, игнорируется:

Lwt_process.pread_line cmd
>>= Printf.printf "blah %s\n"

Я не понимаю, бла, у меня даже нет исключения. Я пробовал pread_line и pread_lines, и похоже, что после >> = просто игнорируется. Если я использую |>, хотя он будет вызываться, но, конечно, мне действительно нужно использовать вывод.

Я прочитал документ и посмотрел на источники Lwt_process, но я не вижу ничего, указывающего на то, что вы не можете вызывать его столько раз, сколько захотите, похоже, создается новый канал для каждый процесс, по крайней мере, на выходе. Конечно, мои внешние процессы вообще не используют stdin, это просто вызов команды df. Я что-то упустил?

Мне должно быть ясно: он не зависает, программа работает нормально. Просто никогда не вызывается то, что пытается использовать результат более поздних команд, первая работает нормально.

Спасибо

...