gpt4 book ai didi

java - chmod 在 java 中的 exec 中不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:06 26 4
gpt4 key购买 nike

我正在使用此代码更改文件权限:

Runtime.getRuntime().exec("chmod 600 '/home/user/Desktop/file'");

但是没有效果!代码执行前后 ls -l/home/user/Desktop/file 报告:

-rw-rw-r-- 1 evir evir 7928 Jul 31 14:54 file

问题是什么?

最佳答案

您提出的问题非常针对您的系统和环境。

所以我将回答更广泛的问题 - 授人以鱼 - 指出你应该查看输出以确定发生了什么(或没有发生什么)。

首先,您应该将从 exec 返回的 Process 实例分配给一个变量。 “即发即弃”有效时很好,但如果无效,您将完全无法确定发生了什么。

第一站是调用 process.waitFor() - 它等待进程完成,并返回它的退出代码。如果它不为零,则它没有正确运行;根据流程的不同,这甚至可以告诉您遇到了哪类错误。

如果这不足以解决您的问题,您将希望查看输出到 stdoutstderr 的内容。您可以通过分别调用 process.getInputStream()process.getErrorStream() 来获取读取这些流的句柄。拥有这些流后,只需照常从中读取字节即可。

(请注意,无论您是否打算处理数据,您确实应该理所当然地从这些流中读取数据。写入足够输出以填充缓冲区的进程可能会阻塞,直到“另一端”(您!) 已经阅读了其中的一些内容。使用您的 chmod 示例虽然这不太可能成为问题。)


现在您可以访问退出状态、stdout 和 stderr 流 - 事实上,如果您在控制台中运行进程,您将获得所有内容。现在剩下的就是使用该信息来解决您的具体问题...

关于java - chmod 在 java 中的 exec 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11738127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com