programing

유닉스에서 읽기와 읽기의 차이점은 무엇입니까?

stoneblock 2023. 6. 18. 10:10

유닉스에서 읽기와 읽기의 차이점은 무엇입니까?

기능 간의 차이점은 무엇입니까?read()그리고.pread()유닉스에서?
그 중에서 선택할 때, 어떤 점을 고려해야 합니까?

나는 그들 사이의 차이점을 검색했지만 결과가 없었습니다.

Pread()는 read()와 동일하게 작동하지만 파일 포인터를 수정하지 않고 파일의 지정된 위치에서 읽습니다.

검색() 호출을 저장하기 위해 파일의 개별 레코드를 가리키는 데이터베이스 색인과 같이 고정 오프셋에서 데이터를 반복적으로 읽어야 할 때 사용합니다.

기본적으로 데이터가 순차적인 경우 read()사용하고, 알고 있거나 읽을 오프셋을 계산할 수 있는 경우 pread()를 사용합니다.

이 링크에서

pread의 원자성은 파일 설명자를 공유하는 프로세스 또는 스레드가 별도의 검색 및 읽기 시스템 호출에서 동일한 결과를 얻기 위해 필요한 잠금 메커니즘을 사용하지 않고 특정 오프셋에서 공유 파일에서 읽을 수 있도록 합니다.파일 포인터가 공유될 때 원자성이 필요하며 읽기 전에 다른 프로세스가 검색을 완료한 후 한 스레드가 lsek를 사용하여 포인터를 이동할 수 있습니다.

구글이 줬어요.

네가 만약read()두 번, 당신은 두 가지 다른 결과를 얻는데, 이것은 그것을 보여줍니다.read()파일의 진행 사항.

네가 만약pread() 두 번, 당신은 같은 결과를 얻는데, 이것은 그것을 보여줍니다.pread()파일의 동일한 지점에 유지됩니다.

read()는 현재 파일 오프셋에서 요청된 바이트 수를 읽기 시작하지만 pread(),를 사용하면 오프셋을 지정할 수 있습니다.이 기능은 한 기능 집합이 파일 포인터를 사용하여 파일을 순차적으로 읽는 동시에 다른 집합이 특정 데이터에 액세스하는 경우에 유용합니다.

언급URL : https://stackoverflow.com/questions/1687275/what-is-the-difference-between-read-and-pread-in-unix