linux exec用法總結

2021-06-22 09:14:55 字數 2915 閱讀 1915

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 執行...