RYN*_*RYN 1 java linux file-permissions exec chmod
我正在使用以下代码更改文件权限:
Runtime.getRuntime().exec("chmod 600 '/home/user/Desktop/file'");
Run Code Online (Sandbox Code Playgroud)
但它没有效果!代码执行ls -l /home/user/Desktop/file报告之前和之后:
-rw-rw-r-- 1 evir evir 7928 Jul 31 14:54 file
Run Code Online (Sandbox Code Playgroud)
问题是什么?
您提出的问题非常适合您的系统和环境.
所以我会回答更广泛的问题 - 并教导一个人钓鱼 - 指出你应该查看输出以确定发生了什么(或没有).
首先,您应该将Process返回的实例分配给exec变量.当它发挥作用时,"即发即忘"是很好的,但如果它不起作用,你绝对无法确定发生了什么.
第一站是调用process.waitFor()- 等待进程完成,并返回其退出代码.如果这不是零则不能正常运行; 并且根据过程,这甚至可以告诉您遇到了什么类型的错误.
如果这不足以解决您的问题,您将需要查看输出到stdout和的内容stderr.您可以通过分别调用process.getInputStream()和获取句柄来读取这些流process.getErrorStream().一旦有了这些流,只需正常读取它们中的字节.
(注意,你真的应该从这些流中读取,无论你是否打算处理数据.编写足够的输出以填充缓冲区的进程可能会阻塞,直到"另一端"(你!)有读一些它.用你的chmod例子虽然这不太可能是问题.)
现在您可以访问退出状态,stdout和stderr流 - 实际上,如果您在控制台中运行该进程,您将获得所有内容.现在剩下的就是用这些信息来解决你的具体问题......