2014-11-17 5 views
0

정상적인 파일을 열었습니다.이 파일은 레코드 데이터베이스로 사용됩니다. lseek님께 서 ESPIPE 오류가 발생했습니다.

fd = open ("file", O_CREAT | O_APPEND | O_RDWR, 0644); 

그런 다음 내 find_record 기능에, 나는 처음으로 오프셋 이동 : 나는 그것을 열었다.

ret_val = lseek(fd, 0, SEEK_SET); 

그 던지는 것은 ESPIPE 오류입니다. 지금 나는 무슨 일이 일어나고 있는지 모른다. 파일 설명자가 파이프로 처리됩니까? 그렇다면 왜?

lseek은 실제로 작동합니까? 그 beacuse 있어야 ret_val -1되지 않습니다.

+0

'open()'의 성공 여부를 확인 했습니까? –

+0

예, 문제가 없습니다. 나는 "파일"에 기록을 썼다. – 0aslam0

답변

1

성공적인 통화에서 errno이 다시 설정된다는 보장은 없습니다.

반환 값이 오류를 나타내는 경우에만 errno의 값을 확인해야합니다.

+0

오. 'errno'의 기본값은 0이 아니어야합니다. – 0aslam0

+0

'ESPIPE'는 실제로'errno'입니다. 29 – 0aslam0

+1

spec은 errno를 사용하는 모든 호출에 대해 오류가 발생하는 모든 호출에 의해 설정된다고 말합니다. 그것 이외에 어떤 가치도 가질 수 있습니다. –