天天看點

linux 基于streams的管道,Linux

linux 基于streams的管道,Linux

8種機械鍵盤軸體對比

本人程式員,要買一個寫代碼的鍵盤,請問紅軸和茶軸怎麼選?

體系結構主要分為使用者态和核心太

核心:本質上是一段管理計算機硬體裝置的程式

系統調用:核心的通路接口,是不能再簡化的操作

公用函數庫:系統調用的組合

Shell:指令解釋器,可程式設計

查找特定檔案find:find path [options] params

在指定目錄開始遞歸尋找查找檔案;例如:find -name “target.file”

全局搜尋 find / -name “target.file”,所有的該檔案都能顯示出來

忽略大小寫:find / -iname “Target.file”

查找檔案内容grepgrep [options] pattern file

查找檔案裡符合條件的字元串

找檔案中的字元串: grep “moo” target

管道操作符 |将兩個指令連接配接起來,前面的指令作為後面指令的輸入

查找檔案:find ~ | grep “target”

| 右邊指令需要能接收标準輸入流才能用

中括号等字元需要用轉義

程序資訊ps -ef

對檔案内容做統計awkawk [options] ‘cmd’ file

一次讀取一行文本,按輸入分隔符進行切片分成多個組成部分

将切片直接儲存在内建變量中

支援對單個切片的判斷,支援循環判斷,預設分隔符為空格(-F 規定分隔符)

NR預設代表換行符 NR==1 表示第一行資料

linux 基于streams的管道,Linux

抓包指令

IP位址抓包:tcpdump -i any host 192.168.1.123 -n

端口抓包: tcpdump -i any port 8080 -n

諸如ls,pwd等指令不再贅述,可以親自動手做一做,都算是Linux的正常使用。

程序間通信(IPC)

程序間通信(IPC,InterProcess Communication)是指在不同程序之間傳播或交換資訊。IPC的方式通常有管道(包括無名管道和命名管道)、消息隊列、信号量、共享記憶體、Socket、Streams等。其中 Socket和Streams支援不同主機上的兩個程序IPC。

管道 pipe

管道一般指的是無名管道,是UNIX系統IPC最古老的形式。管道是一種半雙工的通信方式,資料隻能單向流動

隻能在具有親緣關系的程序間使用。程序的親緣關系通常是指父子程序關系

内容均為無格式位元組流

命名管道FIFO有名管道也是半雙工的通信方式,但是它允許無親緣關系程序間的通信

消息隊列 Message Queue

消息隊列是由消息的連結清單,存放在核心中并由消息隊列辨別符(即隊列ID)來辨別。消息隊列允許一個或多個程序向它寫入或者讀取消息,并且每條消息都有類型(有格式)

消息隊列可以實作消息的随機查詢,消息不一定要以先進先出的次序讀取,程式設計時可以按消息的類型讀取

共享記憶體 Shared Memory

共享記憶體就是映射一段能被其他程序所通路的記憶體,這段共享記憶體由一個程序建立,但多個程序都可以通路。共享記憶體是最快的 IPC 方式,它是針對其他程序間通信方式運作效率低而專門設計的。

它往往與其他通信機制,如信号量,配合使用,來實作程序間的同步和通信。

信号量 Semaphore

信号量的使用主要是用來保護共享資源,使得資源在一個時刻隻有一個程序(線程)所擁有。

信号量的值為正的時候,說明它空閑。所測試的線程可以鎖定而使用它。若為0,說明它被占用,測試的線程要進入睡眠隊列中,等待被喚醒。信号量用于程序間同步,若要在程序間傳遞資料需要結合共享記憶體。

信号量基于作業系統的 PV 操作,程式對信号量的操作都是原子操作。

每次對信号量的 PV 操作不僅限于對信号量值加 1 或減 1,而且可以加減任意正整數。

信号 Signal

信号機制是類UNIX系統中的一種重要的程序間通信手段之一。我們經常使用信号來向一個程序發送一個簡短的消息。比如ctrl-C中斷操作。