홈>
그래서 파일을 읽고 쓰려고합니다. 파일에 쓰는 동안 파일에 특정 색인이 존재하는지 확인한 다음 쓰지 않고 오류가 발생하지 않습니다. 파일의 데이터는 다음과 같습니다.
{1,{data,dcA,1}}.
{2, {data, dcA, 2}}.
{3,{data,dcA,3}}.
file : consult ()는 이와 같은 파일이 필요하기 때문에 각 줄 끝에 점을 추가했습니다.
이 형식으로되어 있습니다.
{Index, {Data, Node, Index}}
새 파일을 추가해야 할 때이 색인을 확인합니다.
지금까지 시도한 내용은 https://pastebin.com/apnWLk45
입니다.그리고 다음과 같이 실행합니다 :
193> {ok, P9} = poc:start(test1, self()).
{ok,<0.2863.0>}
194> poc:add(P9, Node, {6, data}).
poc : add/3에서 P9는 파일 : open의 프로세스 ID입니다.
셸에서 이전에 dcA로 정의했습니다.
세 번째는 데이터입니다-이 형식의 데이터-
{Index, data}
file : consult/1을 사용하고 있으므로 파일 이름을 매개 변수로 사용합니다. 그 시점에는 프로세스 ID 만 있습니다. 그래서 나는 이름을
file:pid2name(_Server)
.
처음으로 실행할 때 완벽하게 실행됩니다.
이 작업을 다시 실행하면 poc : add (P9, Node, {6, data2})이 줄에 오류가 발생합니다.
file:pid2name(_Server)
.
exception error: no match of right hand side value undefined
이 문제를 어떻게 해결할 수 있습니까?
Erlang을 처음 사용합니다. 일주일 만에 배우기 시작했습니다.
- 답변 # 1
와이즈 비즈
DETS 테이블은 원하는 것을 쉽게 할 수 있습니다 :
쉘에서 :
와이즈 비즈 와이즈 비즈 프로세스가 파일을 열면 파일 I/O를 처리하는 프로세스에연결됩니다. 즉, 파일을 여는 프로세스가 비정상적으로 종료되면 I/O 프로세스도 종료됩니다. 예를 들면 다음과 같습니다.쉘에서 :