首頁  >  文章  >  系統教程  >  從一個檔案讀取數據,應用程式首先要呼叫作業系統函數

從一個檔案讀取數據,應用程式首先要呼叫作業系統函數

WBOY
WBOY轉載
2024-02-19 09:42:02413瀏覽

在檔案I/O中,要從一個檔案讀取資料linux檔案句柄,應用程式首先要呼叫作業系統函數並傳送檔案名,並選一個到該檔案的路徑來打開文件。函數拿回一個順序號,即Perl檔案句柄(filehandle)linux檔案句柄,該Perl檔案句柄對於開啟的檔案是惟一的辨識根據。要從檔案中讀取一塊數據,應用程式必須呼叫函數ReadFile,並將Perl檔案句柄在顯存中的位址和要拷貝的位元組數傳送給作業系統。當完成任務後,在透過呼叫系統函數來關掉該檔案。

不只你模仿唯我論者哲學家編撰一個人工智慧程式,你的程式使用不和外界溝通的方式。在班級事例中的第三和四行,你將見到"GRADES",這是引用另一個Perl文件的資料型別,稱為據柄(filehandle)。一個句柄就是你給一個文件,設備,管套(socket)或管線的一個名子,便於幫助你記住你正處理的名子,並隱藏個別緩存等的複雜性。 (在內部,句柄類似C 語言的流(streams),或BASIC中的I/O通道)句柄使你從不同的地方輸入和輸出給不同的地方都較容易。使Perl成為好語言的一個誘因是它能和多個文件通信並一次處理她們。對外部物件有好的符號名子是一個好語言的一個組成部分[1]。

其他使Perl是一個好語言的是:它是8位的,是可嵌入的,你能透過擴充模式在Perl中嵌入其他程式。它是簡潔的,網路上容易使用。環境上是清楚的,容易對話。你能以許多不同的方式引用它(如同上面看見的)。其實,語言本身不是這麼嚴格的結構,以至於你不能使它超越你的問題。又回到TMTOWTDI。

你建立一個句柄,並且透過open函數把它和一個檔案連結。 open有兩個參數:句柄和你想與它連結的一個檔名。 Perl也給一些預先定義(和預先開啟的)句柄。 STDIN是你程式的正常輸入頻道,而STDOUT是你程式的正常輸出的頻道。 STDERR是一個附加的輸出通道,以便當把輸入轉為輸出時,程式能給出一些說明[2]。

通常地,這種句柄和你的終端連結,所以你能輸入你的程式並能看見,但她們也可以和文件連結。 Perl能給你這種預定義句柄,由於你的作業系統已提供這種。在UNIX下,進程從他的父進程(通常是一個shell)承繼標準輸入,輸出和錯誤。一個shell的責任之一是建構這種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)),或对同一句柄的一系列open把这个句柄和另一文件连结[3]。

打开一个已打开的句柄是隐式地关掉第一个文件,使它对Perl文件句柄不可取红帽linux系统下载,并打开一个不同的文件。你必须留神这是你真正想做的。有时,碰巧偶然linux 下载工具,例如,当你open($handle,$file)时,$handle恰好包含空串(null)。确认设置$handle为某个单一个量,否则你将对空句柄打开一个新的文件。

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

一旦你已为输入打开一个句柄(或你使用STDIN),你能够使用"行读操作",读一行。这个也以砖石操作著称,由于它的形状。这个砖石操作包含你想读的句柄()[4]。使用STDID句柄读用户提供的答案,如下:

空砖石操作,将从命令行指定的所有文件读,假如没有指定,从STDIN读。(这是许多UNIX"过滤"程序的标准行为)

复制代码代码如下:

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

printSTDOUT"Enteranumber:";#恳求输入一个数

$number=;#输入一个数

printSTDOUT"Thenumberis$number";#输出这个数

你明白我们给你的事例吗?在print句子中STDOUT做哪些?这就是你使用一个输出句柄的方式之一。一个句柄可以作为print句子的第一个参数,假如存在,告诉往哪里输出。在事例中,句柄是冗余的,由于输出早已是STDOUT。对于输入的缺省是STDIN,对于输出的缺省是STDOUT。(在班级反例的18行,我们为防止使你混淆,我们省略了。)

我们也有一件事使你不明白。假如你试里面的事例,你可以注意到你得到一个非常的空行。由于读时没有手动地从你的输入行中删掉换行符(newline)(比如,你输入"9")。对于这种情况,当你想删掉换行符时,Perl提供chop和chomp函数。chop将不加区别地删掉(并返回)传给它的最后一个字符,而chomp只删掉记录标示的末尾(通常地是""),并返回这样删掉的字符数。

以上是從一個檔案讀取數據,應用程式首先要呼叫作業系統函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:itcool.net。如有侵權,請聯絡admin@php.cn刪除