2014-06-21 33 views
-2

我有在C.我也做的外殼(UNIX)以下的「Hello World」程序代碼hello.c:不明白爲什麼我得到一個權限被拒絕錯誤

$ ls > 1 
$ chmod 0 1 
$ cc -o hello hello.c 
$ chmod 400 hello 
$ ./hello > 1 

並且我在1上拒絕了權限。

爲什麼我沒有在hello上獲得權限被拒絕的錯誤?

+0

提示:'chmod 0 1' –

+0

是的,但hello上的400的chmod會阻止其執行權限。那麼最先發生什麼?你好運行1的權限? – Mickey

+0

證據表明什麼? –

回答

1

因爲當您要求shell執行命令的輸出重定向時,要寫入的文件由外殼打開,之前調用該命令。

你的shell會:

  1. 開放1
  2. 「線」 ./hellostdout1
  3. 運行./hello

1有權限0o000,所以第一個操作將失敗。

+0

非常感謝。現在很明顯。 – Mickey