2015-02-01 1 views
0

오픈 IoDevice에서 읽는 기능이 있습니다. {error, Reason}의 경우 파일 이름을 출력하고 싶습니다.Erlang의 IoDevice에서 파일 이름 가져 오기

어떻게하면됩니까?

소스 코드 :

read_file(IoDevice) -> 
    case read_file(IoDevice, []) of 
     {ok, OpCodes} -> 
      OpCodes; 
     {error, Reason} -> 
      io:format("Unable to read file ~s: ~s ~n", [File, Reason]), 
      [] 
    end. 

답변

4

IoDevice는 프로세스 ID 또는 파일 기술자가 될 수 있습니다. 이 프로세스 ID가 있다면, 당신은 파일 이름을 얻기 위해 file:pid2name/1를 사용할 수있는 다음 IoDevice는하지만, pid2name이 작동하지 않습니다, 파일 기술자 인 경우

1> {ok,IoDevice} = file:open("/tmp/x.erl", [read]). 
{ok,<0.43.0>} 
2> {ok, Filename} = file:pid2name(IoDevice). 
{ok,"/tmp/x.erl"} 

을하고 난을 얻을 수있는 방법을 알고하지 않습니다 파일 이름.

관련 문제