2011-12-07 2 views
0

외부 프로그램을 사용하여 PDF 파일을 만들고 erlang 프로그램에 전달하려고합니다. 그러나 PDF에는 EOT 기호가 포함되어 있습니다. 첫 번째 EOT에 도달하면 전송이 중지됩니다.출력에서 ​​os : cmd와 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", ["Hello"])) 

가 전체 파일을 생성 돌려주는 나던, sarnold 이후에 추가. 첫 번째 EOT 기호는 2305 pos에서 발생했으며 erlang은 2304 기호를 갖지만 파일 길이는 64xxx 바이트입니다.

+0

여기에 몇 가지 소스 코드를 표시 할 것입니다. 단일 ASCII 문자가 어떻게 표시되는지는 상상할 수 없습니다. 컴퓨터 사이의 "전송"(우주선? 프로세스)이 실패 할 수 있습니다. 가능한 경우 20 줄에서 30 줄의 코드로 문제를 설명하십시오. – sarnold

답변

1

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

고마워, 지금은, 모든 EOT를 심볼로 대체하고, 생성 된 파일의 시작 부분에 메타 정보를 삽입하고, erlang에서 구문 분석 한 다음 다시 변경합니다. 고마워, 너의 제안. – Yola

관련 문제