首頁  >  文章  >  運維  >  linux中exec操作檔描述符

linux中exec操作檔描述符

ringa_lee
ringa_lee原創
2017-06-23 11:21:352404瀏覽

linux每一個開啟檔案都會關聯一個檔案描述符,需要的時候我們可以使用exec指令指定一個大於3的數字作為檔案

linux預設檔描述符

每打開一個shell就會開啟預設的三個檔案描述子描0,1,2,分別代表標準輸入,標準輸出和標準錯誤輸出。

exec指令關聯檔案描述子

exec 5>/tmp/a.txt 讀取方式
exec 5exec 5<> ;/tmp/a.txt 讀寫方式
exec 5<&-;exec5>&- 關閉檔案描述子

應用程式案例:在shell腳本中重新關聯標準輸出,從而記錄日誌到指定檔案

#!/bin/bash
exec 4>&1         #用4记录标准输出
exec 1>/tmp/abc   #重定向标准输出
echo "123"
echo "456"
exec 1>&4         #恢复标准输出
exec 4>&-         #关闭4

執行此腳本,腳本中的echo輸出會輸出到/tmp/abc檔案中
腳本第二行用4>&1 是為了記錄標準輸出的檔案描述子便於執行完畢後恢復標準輸出,恢復標準輸出也可以用exec 1>/dev/tty

注意點:

  1. echo "hello" >&4 向檔案描述子中輸入內容只使用> 不能用>> ,此時的> 不會清空檔案

  2. 是否清空檔案需要在exec指令關聯檔案描述子到檔案的時候區別使用> 或>>,
    例有如下腳本:

    #!/bin/bash
    exec 4>/tmp/abc
    echo "123" >&4
    echo "456" >&4
    exec 4>&-

    則每次執行完腳本後/tmp/abc檔內容都是123\n456
    若把第二行換成exec 4>>/tmp/abc則會追加進去

  • #檔案的清空操作是在exec指令的操作時進行的

以上是linux中exec操作檔描述符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn