리눅스 lseek 예제

lseek() 시스템 호출은 파일 설명자의 파일 위치를 지정된 값으로 설정하기 위해 제공됩니다. 3.sseek () 의 동작은 다음 중 하나가 될 수있는 원산지 인수에 따라 달라집니다 : 지금까지, lseek의 가장 일반적인 용도는 끝까지 찾고, 새로운 파일 postion = 현재 파일 위치 + 오프셋 (sseek에 pos 인수) 리눅스 특정 제한 사항: tty 장치에서 lseek()를 사용하면 ESPIPE를 반환합니다. 파일 I/O에 사용할 수 있는 함수를 설명하여 유닉스 시스템에 대한 논의를 시작하고 파일을 열고, 파일을 읽고, 파일을 작성하는 등의 기능을 설명하겠습니다. 대부분의 유닉스 파일 I/O는 열기, 읽기, 쓰기, lseek 및 닫기의 다섯 가지 함수만 사용하여 수행할 수 있습니다. 그런 다음 읽기 및 쓰기 함수에 대한 서로 다른 버퍼 크기의 영향을 검사합니다. lseek() 업데이트된 파일 위치를 반환함에 따라 지정된 파일(예: input.txt)에서 현재 파일 위치를 찾아 대체 nth 바이트를 읽고 « lseek »의 도움으로 다른 파일에 쓸 수 있습니다. lseek (C 시스템 호출): lseek 파일 설명자의 읽기/쓰기 포인터의 위치를 변경 하는 데 사용 되는 시스템 호출입니다. 위치는 절대 또는 상대적 용어로 설정할 수 있습니다. 함수 정의 예를 들어 fd의 파일 위치를 1000으로 설정하려면 lseek() 함수를 사용하여 파일 오프셋을 파일 끝을 넘어 설정할 수 있습니다(그러나 파일 크기는 변경되지 않음). 나중에 데이터가 이 시점에서 기록되는 경우 데이터가 실제로 간격에 기록될 때까지 간격(« 구멍 »)의 데이터를 null 바이트(aqaq)로 반환합니다. 위의 두 경우 모두 에서 sseek() 오프셋 포인트가 파일의 끝을 지나면 실패합니다. 파일 끝 + 오프셋의 새 파일 위치 이 장에서 설명하는 함수를 버퍼링되지 않은 I/O라고 도합니다(5장에서 설명하는 표준 I/O 루틴과 는 대조적임).

버퍼링되지 않은 용어는 각 읽기 또는 쓰기가 커널에서 시스템 호출을 호출한다는 사실을 나타냅니다. 이러한 버퍼링되지 않은 I/O 함수는 ANSI C의 일부가 아니라 POSIX.1 및 XPG3의 일부입니다. 여러 프로세스 간의 리소스 공유를 설명할 때마다 원자성 작업의 개념이 중요해집니다. 파일 I/O 및 열린 함수에 대한 인수와 관련하여 이 개념을 살펴봅습니다. 이렇게 하면 여러 프로세스와 관련된 커널 데이터 구조 간에 파일을 공유하는 방법에 대한 논의가 가능합니다. 이러한 기능을 설명한 후에는 dup, fcntl 및 ioctl 함수를 설명합니다. 음수, 0 또는 양수일 수 있습니다. pos가 0이면 오프셋을 끝으로 설정합니다.

이러한 작업을 위해 구멍은 기본 파일 저장소에 할당되지 않은 0의 시퀀스입니다.