используя os: cmd и символ EOT в выводе - PullRequest
0 голосов
/ 07 декабря 2011

С помощью внешней программы я создаю файл PDF и пытаюсь перейти на программу erlang. Но PDF содержит символы EOT. При достижении первого EOT передача прекращается.

Как мне передать весь файл?

добавлено после sarnold,

os:cmd(io_lib:format("LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib; 
  export LD_LIBRARY_PATH; /home/yola/progra/cpp/pdf/a.out ~s", ["Hello"]))

это не возвращает весь сгенерированный файл. Первый символ EOT обнаружен в позиции 2305, и erlang получил 2304 символа, но длина файла 64xxx байтов.

1 Ответ

1 голос
/ 07 декабря 2011

Функция os:cmd использует EOT, чтобы узнать, когда прекратить чтение из внешней программы; см. os.erl . Поэтому вам придется сделать это другим способом, например, перенаправить вывод в файл:

os:cmd(io_lib:format("LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib; 
  export LD_LIBRARY_PATH; /home/yola/progra/cpp/pdf/a.out ~s > my.pdf", ["Hello"])),
{ok, MyPDF} = file:read_file("my.pdf")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...