Erlang 在输出中使用os:cmd和EOT符号

Erlang 在输出中使用os:cmd和EOT符号,erlang,cmd,Erlang,Cmd,用我的外部程序创建一个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"])) 这不会返回整个生成的文件。在23

用我的外部程序创建一个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"]))

这不会返回整个生成的文件。在2305 pos和erlang遇到的第一个EOT符号得到了2304个符号,但文件长度为64xxx字节。

函数使用EOT知道何时停止从外部程序读取;看见因此,您必须以其他方式执行此操作,例如将输出重定向到文件:

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")

您将在这里展示一些源代码——我无法想象一个ASCII字符怎么会导致“传输”(在计算机之间?进程之间?宇宙飞船之间?)失败。如果可能的话,试着用二十到三十行代码来演示这个问题。谢谢,现在,我将每个EOT替换为over symbol,在生成的文件的开头插入元信息,在erlang中解析,然后更改回去。谢谢你的建议。