原创 【Linux】進程間通信 ----- 消息隊列(IPC資源)

system V消息隊列 消息隊列提供了一個從一個進程向另外一個進程發送一塊數據的方法,每個數據塊都被認爲是有一個類型,接收者進程接收的數據塊可以有不同的類型值,消息隊列也有管道⼀樣的不⾜,就是每個消息的最⼤⻓度是有上限的(MSGMAX)

原创 【Linux】進程間通信 ---- 管道

一、進程間通信   進程間通信的本質 它的本質就是讓不同的進程看到一份公共的資源(內存的一段內存區域),該資源只能由第三方提供,即操作系統直接或者間接提供。 進程間通信的目的 數據傳輸:一個進程需要將它的數據發送給另一個進程 資源共享:多

原创 【Linux】進程間通信 ----- 共享內存(IPC資源)

system v 共享內存 每個進程都是獨立的,當進程運行起來時,都有一個PCB,一個虛擬地址空間,一個頁表,一個對應的物理內存,頁表將每一個進程的PCB映射到物理內存的不同區域,保證了它們的獨立性。但是如果兩個頁表都分別把進程虛擬地址空

原创 【Linux】進程的控制 ---- 創建、終止、等待、替換

進程創建(fork) 進程創建不只有fork,其實bash跑一個程序也是創建一個進程,這裏只說fork。 1.初識 fork函數 在Linux當中,fork函數是一個非常重要的函數,它能從已經存在的進程中創建一個新進程。新進程爲子進程,原

原创 【Linux】Linux中怎麼設置和刪除環境變量

環境變量是一個具有特定名字的對象,它包含了一個或者多個應用程序所將使用到的信息。例如PATH.在交叉編譯中,會經常運用到環境變量的設置。 查看當前全部的環境變量的命令是env.  查看環境變量的值是echo +$變量名。例如查看PATH

原创 【Linux】Linux下如何生成及使用動態庫與靜態庫?

靜態庫與動態庫 庫這個概念對於我們來說並不陌生,在C語言中,我們使用了很多次庫,比如printf。一般使用庫其實是在用兩個東西:一是對應的庫文件,二是與庫文件相對應的 .h 頭文件。一般在在Linux中,庫文件有兩大類,分別是動態庫(.s

原创 【Linux】軟鏈接與硬鏈接

在Linux操作系統下,我們知道 ls -l 命令 可以查看文件屬性,如果再輸入 ls-i 命令,我們會發現屬性前面多了一串數字。這個數字就是 inode 。鏈接-->快速認識文件描述符及其分配規則;你不懂的 inode 是什麼?很明顯,

原创 【Linux】快速認識文件描述符及其分配規則;你不懂的 inode 是什麼?

文件描述符fd 通過對open函數的學習,我們知道了文件描述符就是一個小整數,可以再次用代碼驗證一下。 用系統調用函數open打開了四個文件,然後打印他們的文件描述符fd: 1 #include <stdio.h> 2 #in

原创 【Linux】再談文件描述符之緩衝區

因爲IO相關函數與系統調用接口對應,並且庫函數封裝系統調用,所以本質上,訪問文件都是通過fd訪問的。所以C庫當中的FILE結構體內部,必定封裝了fd。 往標準輸出寫入有三種方法: printf(str1);//C庫函數 fwrite(s

原创 【Linux】教你三分鐘學會重定向

重定向是什麼 在學習了文件描述符及其分配規則(https://blog.csdn.net/Miss_Monster/article/details/86411039)之後,瞭解到操作系統總是找到當前files_struct的指針數組中沒有

原创 【Linux】文件相關係統調用接口(IO)

早期在寫C語言接口的時候,我們可以通過fopen來打開一個文件,下面這段兩段代碼爲例: hello.c寫文件 1 #include <stdio.h>

原创 【Linux】程序中 umask(0) 的含義

當我們登錄系統之後創建一個文件總是有一個默認權限的,那麼這個權限是怎麼來的呢?這就是umask乾的事情。umask設置了用戶創建文件的默認權限,它與chmod的效果剛好相反,umask設置的是權限"補碼",而chmod設置的是文件權限碼。

原创 【Linux】shell及其運行原理

Linux嚴格意義上來說是一個操作系統,但是我們的用戶是無法直接與操作系統對話的,而是通過shell來使用。 shell是用戶和Linux內核之間的接口程序,如果把Linux內核想象成一個球體的中心,shell就是圍繞內核的外層。 sh

原创 【C++】類和對象(4)

一、類的六個默認成員函數 下面是一個Date類,但是它類中什麼成員也沒有,這就是空類。但是它雖然看起來什麼都沒有,實際上不是的,在我們什麼都不寫的情況下,它會自動生成六個默認的成員函數。如圖所示的構造函數、析構函數、拷貝構造函數、賦值重載

原创 【Linux】實現一個 mini_shell

在學習了進程等待和程序替換及其相關函數之後,就可以實現一個我們自己簡單mini_shell了。 shell及其運行原理: https://blog.csdn.net/Miss_Monster/article/details/8637007