1. 程式人生 > >Linux中“一切皆檔案”

Linux中“一切皆檔案”

“一切皆檔案”

在linux開發過程中,相信大家都聽過一句話叫作“limux下,一切皆檔案”。這句話是linux/unix的哲學核心思想,下面我們就針對這句話給大家進行展開解釋下。

這句話中的“檔案”不僅僅是我們通常所指的檔案,在linux和unix中它代表的更為寬泛。目錄、字元裝置、塊裝置、 套接字、程序、執行緒、管道等都被視為是一個“檔案”,那麼既然這樣當我們建立一個檔案時,我們如何來操作一個已經開啟檔案呢?

檔案描述符(file descriptor),簡稱fd

這裡就使用到了“檔案描述符”,它是一個對應某個已經開啟的檔案的索引(非負整數)。下圖表述了一個檔案描述符的意義,


其中每一個檔案描述符都是一個問檔案的索引,當然也可以出現多個不同的檔案描述符索引同一個檔案。在linux系統中,0是標準輸入的檔案描述符,stdin。1是標準輸出的檔案描述符,stdout。2是標準錯誤輸出的檔案描述符,stderr

//test.cpp關於標準檔案描述符的測試
#include<unistd.h>//這是系統呼叫read和write和標頭檔案
#include<string.h>
int main()
{
      char *t = new char[10];
      read(0, t, 10);      //從標準輸入(鍵盤)讀取10個位元組長度放入t中
      write(1, t, strlen(t));//將t中的前10個位元組內容寫出到標準輸出(螢幕)上
      return 0;
}
g++ -o test test.cpp

./test


其中第一個行的"ertewtr"是read系統呼叫我們輸入的,第二行的"ertewtr"是write系統呼叫寫到螢幕上的。

相關推薦

Linux一切檔案

“一切皆檔案” 在linux開發過程中,相信大家都聽過一句話叫作“limux下,一切皆檔案”。這句話是linux/unix的哲學核心思想,下面我們就針對這句話給大家進行展開解釋下。 這句話中的“檔案”

Linux學習02--Linux一切檔案

Linux學習第二部 Linux一切皆物件 啊啊啊啊啊,今天被學妹說太直了,嚶嚶嚶。   學習linux兩三天了,前期感覺並不難,只是命令多,多記記多敲一敲就能都記住了。希望自己能夠堅持下去吧! 下面是根據第二次學的做的一些筆記。 一、 系統狀態檢測命令   1-

linux一切檔案之Unix domain socket描述符(二)

一、知識準備 1、在linux中,一切皆為檔案,所有不同種類的型別都被抽象成檔案(比如:塊裝置,socket套接字,pipe佇列) 2、操作這些不同的型別就像操作檔案一樣,比如增刪改查等 3、主要用於:執行在同一臺機器上的2個程序相互之間的資料通訊 4、它們和網路檔案描述符非常相似(比如:TCP

linux一切檔案之tcp socket描述符(三)

一、知識準備 1、在linux中,一切皆為檔案,所有不同種類的型別都被抽象成檔案(比如:塊裝置,socket套接字,pipe佇列) 2、操作這些不同的型別就像操作檔案一樣,比如增刪改查等 二、環境準備 元件 版本

linux一切檔案之Unix domain socket描述符

一、知識準備 1、在linux中,一切皆為檔案,所有不同種類的型別都被抽象成檔案(比如:塊裝置,socket套接字,pipe佇列) 2、操作這些不同的型別就像操作檔案一樣,比如增刪改查等 二、環境準備 元件 版本 OS CentOS Linux release 7.5.1804

linux一切檔案檔案描述符(一)

一、知識準備 1、在linux中,一切皆為檔案,所有不同種類的型別都被抽象成檔案。如:普通檔案、目錄、字元裝置、塊裝置、套接字等 2、當一個檔案被程序開啟,就會建立一個檔案描述符。這時候,檔案的路徑就成為了定址系統,檔案描述符成為了位元組流的介面 3、相對於普通檔案這類真實存在於檔案系統中的檔案,tcp

Linux系統下一切檔案,socket程式設計淺析

“一切皆Socket!” 話雖些許誇張,但是事實也是,現在的網路程式設計幾乎都是用的socket。 ——有感於實際程式設計和開源專案研究。 我們深諳資訊交流的價值,那網路中程序之間如何通訊,如我們每天開啟瀏覽器瀏覽網頁時,瀏

linux一切檔案之tty字元裝置(深入理解sshd建立pty的過程) (五)

一、知識準備 1、在linux中,一切皆為檔案,所有不同種類的型別都被抽象成檔案(比如:塊裝置,socket套接字,pipe佇列) 2、操作這些不同的型別就像操作檔案一樣,比如增刪改查等 3、塊裝置支援隨機訪問,而字元裝置只能依據先後順序來讀取資料。最典型的字元裝置就是tty 二、環境準備 元

Linux 一切檔案思想

“一切皆檔案” 在linux開發過程中,相信大家都聽過一句話叫作“limux下,一切皆檔案”。這句話是linux/unix的哲學核心思想,下面我們就針對這句話給大家進行展開解釋下。 這句話中的“檔案”不僅僅是我們通常所指的檔案,在linux和unix中它

linuxmysql配置檔案和jdk環境變數

mysql配置檔案 [client]default-character-set = utf8mb4 [mysql]socket = /var/lib/mysql/mysql.sockdefault-character-set = utf8mb4 [mysqld]skip-name-resolveport

linux/etc/passwd檔案解析

在Linux /etc/passwd檔案中每個使用者都有一個對應的記錄行,它記錄了這個使用者的一些基本屬性。系統管理員經常會接觸到這個檔案的修改以完成對使用者的管理工作。 它的內容類似下面的例子: 從上面的例子我們可以看到,/etc/passwd中一行記錄對應著一個使用者,每行記錄又被

linux的系統檔案傳輸、歸檔、壓縮

環境為redhat系統內有兩臺虛擬機器,分別是desktop(主機名為node1)和server(主機名為node2)。所有操作均在虛擬機器內操作。 首先說一下如何修改主機名 hostnamectl set-hostname node2.example.com

Linux/etc/passwd檔案詳細解析

在Linux /etc/passwd檔案中每個使用者都有一個對應的記錄行,它記錄了這個使用者的一些基本屬性。系統管理員經常會接觸到這個檔案的修改以完成對使用者的管理工作。 它的內容類似下面的例子: 從上面的例子我們可以看到,/etc/passwd中一行記錄對應著一個使用者,每行記錄又被冒號(:)分隔為

linux匯入sql檔案

在linux中匯入sql檔案的方法分享(使用命令列轉移mysql資料庫) 因匯出sql檔案 在你原來的網站服務商處利用phpmyadmin匯出資料庫為sql檔案,這個步驟大家都會,不贅述。 上傳sql檔案 前面說過了,我們沒有在雲主機上安裝ftp,怎麼上傳呢? 開啟ftp客戶端軟體,例如filezi

Linux cp複製檔案時,出現略過的提示

想要進行的操作時把當前目錄下的data檔案複製到/Desktop/data/abbs資料夾中,但是沒有成功,只是提示 cp: 略過目錄 ./data [email protected]:~/Desktop$ cp ./data /Desktop/data/abbs

Linux各種壓縮檔案的壓縮/解壓方式

一般用tar命令可以進行壓縮/解壓(fileName指目標檔案) tar -(cxtzjJvfpPN) fileName 其中: -c :建立一個壓縮檔案的引數指令(打包成tar,不是壓縮); -x :解開一個壓縮檔案的引數指令(解開tar包)!

linux/etc/fstab檔案刪除或修改了,導致系統無法啟動

在linux中,/etc/fstab檔案是磁碟掛載的問題,若該檔案不小心給修改了,或者被刪除了,那麼就會導致系統無法重啟。因為/etc/fstab檔案是記錄磁碟掛載的資訊,若該檔案出現了問題,那麼對應的主目錄(/)和(/boot)以及swap的磁碟將無法掛載,所以這個檔案對於

面向物件 3 屬性查詢與繫結方法&python一切為物件

屬性查詢與繫結方法 x='全域性' class LuffyStudent: school = 'luffycity' # stu1,'王二丫','女',18 def __init__(self,name,sex,age):

Linux常用的檔案檢視命令

cat 常用的檢視命令 引數 解釋 -A 整合命令-vET -b 列出行號,但是空白行不標誌行號 -E 將結

linux記錄某檔案的執行次數

程式思想很簡單:建立一個文字,每次執行程式時,開啟文字,讀取裡面的數字記錄,+1再重新輸入進去  首先需要開啟這個檔案,許可權可讀可寫,我們需要讀取檔案裡面的內容,選擇追加的開啟方式 先把檔案裡面的內容讀到buf中。檔案內容應該是一串數字,將其變為一個int型常量。再