Если binprog
не работает должным образом с чем-либо, кроме терминала, в качестве входа, возможно, вам нужно дать ему (псевдо) терминал (pty) для его входа. Это сложнее организовать, но программа expect
- это один из способов сделать это относительно легко. Есть обсуждения программирования с pty в
Расширенное программирование в среде Unix, 3-е издание У Ричарда Стивенса и Стивена Раго, и в Расширенное программирование в Unix, 2-е издание Марка Рочкинда.
Что еще нужно посмотреть, это вывод truss
или strace
или локальный эквивалент. Эти программы регистрируют все системные вызовы, сделанные процессом. На Солярисе я бы запустил:
truss -o binprog.truss binprog
в интерактивном режиме, и посмотрите, что он делает. Затем я попробовал бы это с перенаправлением ввода / вывода, а затем с перенаправлением ввода / вывода из именованного канала; могут быть некоторые существенные различия между тем, что он делает, или вы можете увидеть системный вызов, который зависает. Если вы видите вилки в файле журнала фермы, вам нужно добавить флаг '-f
', чтобы следовать за дочерними элементами.