不明白为什么我得到一个权限被拒绝错误
问题描述:
我有在C.我也做的外壳(UNIX)以下的“Hello World”程序代码hello.c:不明白为什么我得到一个权限被拒绝错误
$ ls > 1
$ chmod 0 1
$ cc -o hello hello.c
$ chmod 400 hello
$ ./hello > 1
并且我在1上拒绝了权限。
为什么我没有在hello上获得权限被拒绝的错误?
答
因为当您要求shell执行命令的输出重定向时,要写入的文件由外壳打开,在之前调用该命令。
你的shell会:
- 开放
1
写 - “线”
./hello
stdout
到1
- 运行
./hello
1
有权限0o000
,所以第一个操作将失败。
+0
非常感谢。现在很明显。 – Mickey
提示:'chmod 0 1' –
是的,但hello上的400的chmod会阻止其执行权限。那么最先发生什么?你好运行1的权限? – Mickey
证据表明什么? –