2011-01-31 23:48:29
| 分類:
linux技術
| 標籤:|舉報
|字型大小大中
小訂閱先總結乙個表:
exec命令 作用
exec ls
在shell
中執行ls,ls
結束後不返回原來的
shell中了
exec 將file
中的內容作為
exec
的標準輸入
exec >file
將file
中的內容作為標準寫出
exec 3將file
讀入到fd3中
sort <&3
fd3中讀入的內容被分類
exec 4>file
將寫入fd4
中的內容寫入
file中
ls >&4
ls將不會有顯示,直接寫入
fd4中了,即上面的
file中
exec 5<&4
建立fd4
的拷貝fd5
exec 3<&-
關閉fd3
1. exec 執行程式
雖然exec
和source
都是在父程序中直接執行,但
exec
這個與source
有很大的區別,
source
是執行shell
指令碼,而且執行後會返回以前的
shell
。而exec
的執行不會返回以前的
shell
了,而是直接把以前登陸
shell
作為乙個程式看待,在其上經行複製。
舉例說明:
root@localhost:~/test#exec ls
exp1 exp5 linux-2.6.27.54 ngis_post.sh test xen-3.0.1-install
root@localhost:~/test#exec >text
root@localhost:~/test#ls
root@localhost:~/test#pwd
root@localhost:~/test#echo "hello"
root@localhost:~/test#exec>/dev/tty
root@localhost:~/test#cat text
exp1
exp5
linux-2.6.27.54
ngis_post.sh
test
text
xen-3.0.1-install
/root/test
hello
root@localhost:~/test#
exec >text 是將當前
shell
的標準輸出都開啟到
text
檔案中
root@localhost:~/test#cat test
lspwd
root@localhost:~/test#bash
root@localhost:~/test#exec root@localhost:~/test#ls
exp1 exp5 linux-2.6.27.54 ngis_post.sh test text xen-3.0.1-install
root@localhost:~/test#pwd
/root/test
root@localhost:~/test#
root@localhost:~/test#exit #自動執行
2. exec的重定向
先上我們進如/dev/fd/
目錄下看一下:
root@localhost:~/test#cd /dev/fd
root@localhost:/dev/fd#ls
0 1 2 255
缺省會有這四個項:0
是標準輸入,預設是鍵盤。
1是標準輸出,預設是螢幕
/dev/tty
2是標準錯誤,預設也是螢幕
當我們執行exec 3>test時:
root@localhost:/dev/fd#exec 3>/root/test/test
root@localhost:/dev/fd#ls
0 1 2 255 3
root@localhost:/dev/fd#
看到了吧,多了個3
,也就是又增加了乙個裝置,這裡也可以體會下
linux
裝置即檔案的理念。這時候
fd3就相當於乙個管道了,重定向到
fd3中的檔案會被寫在
test
中。關閉這個重定向可以用
exec 3>&-。
root@localhost:/dev/fd#who >&3
root@localhost:/dev/fd#ls >&3
root@localhost:/dev/fd#exec 3>&-
root@localhost:/dev/fd#cat /root/test/te
test text
root@localhost:/dev/fd#cat /root/test/test
root tty1 2010-11-16 01:13
root pts/0 2010-11-15 22:01 (192.168.0.1)
root pts/2 2010-11-16 01:02 (192.168.0.1)
3. 應用舉例:
exec 3while read -u 3 pkg
doecho "$pkg"
done
推薦大家去看原文,原文更精彩~
linux exec函式家族
1.exec家族一共有六個函式,分別是 1 int execl const char path,const char arg,2 int execle const char path,const char arg,char const envp 3 int execv const char path...
linux exec函式家族
1.exec家族一共有六個函式,分別是 1 int execl const char path,const char arg,2 int execle const char path,const char arg,char const envp 3 int execv const char path...
linux exec函式族演示
就是呼叫系統的程式,自定義的指令碼不知為何有時不行。自定義二進位制檔案卻可以。1.execl list 列出引數列表 execl l是list 引數列表 include include include includeint main else if result 0 else return 0 執行...