不明白为什么我得到一个权限被拒绝错误

问题描述:

我有在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

证据表明什么? –

因为当您要求shell执行命令的输出重定向时,要写入的文件由外壳打开,之前调用该命令。

你的shell会:

  1. 开放1
  2. “线” ./hellostdout1
  3. 运行./hello

1有权限0o000,所以第一个操作将失败。

+0

非常感谢。现在很明显。 – Mickey