>  기사  >  시스템 튜토리얼  >  파일에서 데이터를 읽기 위해 애플리케이션은 먼저 운영 체제 함수를 호출합니다.

파일에서 데이터를 읽기 위해 애플리케이션은 먼저 운영 체제 함수를 호출합니다.

WBOY
WBOY앞으로
2024-02-19 09:42:02413검색

파일 I/O에서 파일 linux 파일 핸들에서 데이터를 읽으려면 애플리케이션이 먼저 운영 체제 함수를 호출하고 파일 이름을 전달한 다음 파일 경로를 선택하여 파일을 열어야 합니다. 이 함수는 Perl 파일 핸들(filehandle)linux 파일 핸들인 시퀀스 번호를 반환합니다. Perl 파일 핸들은 열린 파일을 식별하는 유일한 기초입니다. 파일에서 데이터 조각을 읽으려면 애플리케이션은 ReadFile 함수를 호출하고 비디오 메모리의 Perl 파일 핸들 주소와 복사할 바이트 수를 운영 체제에 전송해야 합니다. 작업이 완료되면 시스템 함수를 호출하여 파일을 닫습니다.

유유론적 철학자를 모방한 인공지능 프로그램을 작성하고 있을 뿐만 아니라, 프로그램이 외부 세계와 소통하지 않는 방식을 사용하고 있습니다. 클래스 예제의 세 번째와 네 번째 줄에서는 파일 핸들이라고 하는 다른 Perl 파일을 참조하는 데이터 유형인 "GRADES"를 볼 수 있습니다. 핸들은 작업 중인 이름을 기억하는 데 도움을 주고 개별 캐시 등의 복잡성을 숨기기 위해 파일, 장치, 소켓 또는 파이프라인에 지정하는 이름입니다. (내부적으로 핸들은 C++의 스트림이나 BASIC의 I/O 채널과 같습니다.) 핸들을 사용하면 다른 위치에서 더 쉽게 입력하고 출력할 수 있습니다. Perl을 좋은 언어로 만드는 것 중 하나는 여러 파일과 통신하고 동시에 처리하는 능력입니다. 외부 객체에 대한 좋은 상징적 이름을 갖는 것은 좋은 언어의 필수적인 부분입니다 [1].

Perl을 좋은 언어로 만드는 또 다른 요소는 8비트이고 내장 가능하며 확장 모드를 통해 Perl에 다른 프로그램을 내장할 수 있다는 것입니다. 간결하고 웹에서 사용하기 쉽습니다. 환경은 명확하고 대화하기 쉽습니다. 위에서 본 것처럼 다양한 방법으로 참조할 수 있습니다. 사실, 언어 자체는 너무 엄격하게 구조화되어 있어서 질문 이상으로 만들 수 없습니다. 다시 TMTOWTDI로 돌아갑니다.

열기 기능을 통해 핸들을 생성하고 파일에 연결합니다. open은 링크하려는 파일의 이름과 핸들이라는 두 가지 매개변수를 사용합니다. Perl은 또한 미리 정의된(그리고 미리 열린) 핸들을 제공합니다. STDIN은 프로그램의 일반 입력 채널이고 STDOUT은 프로그램의 일반 출력 채널입니다. STDERR은 입력을 출력으로 변환할 때 프로그램이 몇 가지 지침을 제공할 수 있도록 하는 추가 출력 채널입니다[2].

일반적으로 이러한 핸들은 터미널에 연결되어 있으므로 프로그램을 입력하고 볼 수 있지만 파일에 연결할 수도 있습니다. 운영 체제가 이미 제공하고 있기 때문에 Perl은 미리 정의된 핸들을 제공할 수 있습니다. UNIX에서 프로세스는 상위 프로세스(일반적으로 셸)로부터 표준 입력, 출력 및 오류를 상속받습니다. 쉘의 책임 중 하나는 하위 프로세스가 이에 대해 걱정할 필요가 없도록 이 I/O 스트림을 구조화하는 것입니다.

linux文件句柄_句柄文件超多_句柄文件和文件句柄

open 함수를 이용하면 다양한 목적(입력, 출력, 파이프라인)에 대한 핸들을 생성할 수 있기 때문에, 무엇을 하고 싶은지 명시할 수 있어야 합니다. UNIX 명령줄에서와 마찬가지로 파일 이름에 문자를 추가하기만 하면 됩니다.

다음과 같이 코드를 복사하세요.

open(SESAME,"filename");#기존 파일에서 읽기

句柄文件超多_linux文件句柄_句柄文件和文件句柄

open(SESAME,"open(SESAME,">filename");#파일을 만들고 쓰기

open(SESAME,">>filename");#기존 파일에 계속 쓰기

open(SESAME,"|output-pipe-command");#출력 필터 구축

open(SESAME,"input-pipe-command|");#입력 필터 구축

들으셨듯이 원하는 이름을 선택하실 수 있습니다. SESAME 핸들이 열리면 명시적으로 닫힐 때까지(close(SESAME) 사용) 파일이나 파이프에 액세스하는 데 사용할 수 있습니다. 또는 동일한 핸들에 대한 일련의 열기가 이 핸들을 다른 파일에 연결합니다[3].

이미 열려 있는 핸들을 열면 첫 번째 파일이 암시적으로 닫혀 Perl 파일 핸들에서 사용할 수 없게 되고 다른 파일이 열립니다. 이것이 당신이 정말로 하고 싶은 일이라는 것을 명심해야 합니다. 때로는 Linux 다운로드 도구가 우연히 발생하는 경우가 있습니다. 예를 들어 ($handle,$file)을 열 때 $handle에 빈 문자열(null)이 포함되는 경우가 있습니다. $handle을 단일 값으로 설정해야 합니다. 그렇지 않으면 null 핸들이 있는 새 파일이 열립니다.

句柄文件超多_句柄文件和文件句柄_linux文件句柄

입력용 핸들을 열면(또는 STDIN을 사용하면) "줄 읽기 작업"을 사용하여 줄을 읽을 수 있습니다. 이것은 모양 때문에 석공술 작업이라고도 알려져 있습니다. 이 벽돌 작업에는 읽으려는 핸들()[4]이 포함되어 있습니다. 다음과 같이 STDID 핸들을 사용하여 사용자가 제공한 답변을 읽습니다.

빈 벽돌 작업은 명령줄에 지정된 모든 파일에서 읽습니다. 지정하지 않으면 STDIN에서 읽습니다. (이것은 많은 UNIX "필터" 프로그램의 표준 동작입니다.)

다음과 같이 코드를 복사하세요.

句柄文件超多_句柄文件和文件句柄_linux文件句柄

printSTDOUT"Enteranumber:";#번호 입력 요청

$number=;#숫자를 입력하세요

printSTDOUT"Thenumberis$number";#이 숫자를 출력하세요

우리가 제공한 예를 이해하셨나요? STDOUT은 인쇄 문장에서 무엇을 합니까? 이것은 출력 핸들러를 사용하는 방법 중 하나입니다. 핸들은 print 문의 첫 번째 매개변수로 사용될 수 있습니다. 존재하는 경우 출력할 위치를 알려줍니다. 이 예에서는 출력이 이미 STDOUT이므로 핸들이 중복됩니다. 입력의 기본값은 STDIN이고 출력의 기본값은 STDOUT입니다. (혼란을 피하기 위해 클래스 반례의 18번째 줄을 생략했습니다.)

그리고 당신이 이해하지 못하는 것이 하나 있습니다. 내부 예제를 시도해 보면 매우 빈 줄이 나타나는 것을 알 수 있습니다. 읽을 때 입력 줄에서 개행 문자를 수동으로 제거하지 않았기 때문입니다(예: "9"를 입력함). 이 경우 개행 문자를 제거하려는 경우 Perl은 잘라내기 및 잘라내기 기능을 제공합니다. chomp는 전달된 마지막 문자를 무차별적으로 삭제(및 반환)하는 반면, chomp는 레코드 식별자(보통 "")의 끝 부분만 삭제하고 삭제된 문자 수를 반환합니다.

위 내용은 파일에서 데이터를 읽기 위해 애플리케이션은 먼저 운영 체제 함수를 호출합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 itcool.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제