[root@localhost code]# cat multi_process_test01.sh
#!/usr/bin/bash
#ping01
for i in
do &
done
wait
echo "all completed..."
多程序方式併發,返回時間是亂序的。
[root@localhost code]# cat user_add_multi_process.sh
#!/usr/bin/bash
##########################################
#user_add #
#v0.1 by abc #
##########################################
for i in
do & # 用後台符&實現併發
done
wait
echo "completed..."
併發,有程序數量的限制,不可無限制的增加。如果併發數量較多時,就會有問題。需要對併發數量進行控制
$$: 當前程序
[root@localhost code]# exec 6<> /file1 # 檔案描述符6,開啟檔案file1
[root@localhost code]# cat /proc/$$/fd/6 # 由於檔案描述符/控制代碼6還在,因此檔案並沒有被刪除
111[root@localhost code]# cp /proc/$$/fd/6 /file1
[root@localhost code]# exec 6
[root@localhost code]# ll /proc/$$/fd
total 0
lrwx------. 1 root root 64 may 3 18:08 0 -> /dev/pts/0
lrwx------. 1 root root 64 may 3 18:08 1 -> /dev/pts/0
lrwx------. 1 root root 64 may 3 18:08 2 -> /dev/pts/0
lrwx------. 1 root root 64 may 3 19:56 255 -> /dev/pts/0
通過exec開啟乙個檔案:exec 6<> /file1
通過exec關閉乙個檔案:exec 6
如果檔案控制代碼/描述符fd沒有被釋放,即使刪除原始檔,檔案描述符/內容仍然存在,不會影響fd
[root@localhost code]# file /tmp/fifo1 #命名管道
/tmp/fifo1: fifo (named pipe)
[root@localhost code]# cat /tmp/fifo1 #沒有內容
命名管道:只能在當前tty下面執行。
匿名管道:可以將內容傳遞給另乙個tty。
在tty0上面 rmp-qa > tmp/tmpfifo 裝入內容後
在tty1上面就可以讀取內容。但是只能讀取一次,後續就沒有了
普通管道和命名管道
2116 0 管道分為普通管道和命名管道 兩者都是半雙工的。普通管道只能用於父子程序或兄弟程序間的通訊,因為普通管道通過fork呼叫來拷貝檔案描述符的,在檔案系統中,普通管道並不對應物理檔案。命名管道在檔案系統中有物理檔案存在,因此可以用於非親屬的程序間通訊。include int pipe int...
命名管道和匿名管道
我們知道程序間是可以通訊的。可以達到資料傳輸 資源共享 事件通知 程序控制等目的。程序間通訊主要包括管道 系統ipc,套接字等。管道分為三種 1 普通管道 int pipe int fds 2 返回值0表示成功,1表示失敗 fd 0 讀 fd 1 寫 子程序往管道中寫資料,寫資料時要關閉讀端 父程序...
linux的管道和命名管道
看了個教程,感覺還是要結合 看。管道是linux裡面程序間通訊的一種方式,其他的還有像訊號 signal 訊號量 訊息佇列 共享記憶體 套接字 socket 等。1.管道pipe int pipe int fd 2 返回值 成功,返回0,否則返回 1。引數陣列包含pipe使用的兩個檔案的描述符。fd...