【发布时间】:2014-10-15 11:02:27
【问题描述】:
我正在从我的 Java 应用程序调用 C 应用程序(仅限控制台)。 我用: Process proc = rt.exec("./Debug/CPP_CL --device 0"); CPP_CL 需要访问 clinfo() 硬件......所以 GPU 硬件作为它在 GPU 上的处理。因此,在这种情况下需要以 sudo/root 身份运行。
目前一切正常,但前提是我将 Java JAR 作为 sudo 运行。目前仅用于测试 CPG 是 chmod 777(我知道不好)。
我想知道最好的方法是什么?如果由 SUDO java 调用,CPP 会作为 SUDO 运行吗?还是需要 chmod'ed ?如果是这样,最好的 chmod 值是多少?
谢谢。
【问题讨论】:
-
您可以在 /etc/sudoers 中为用户添加一个条目,以允许他以 root 权限运行
./Debug/CPP_CL --device 0。 -
你还是在它前面调用 sudo 还是默认假设呢?
-
是的,仅适用于您使用 rt.exec("sudo .../Debug/CPP_CL ...") 调用的进程。因此 Java 应用程序以用户权限运行。
-
Java 程序需要读入由 CPP_CL 生成的文件,然后该文件将由 root 拥有,不是吗?
-
如果 CPP_CL 使用默认的 umask (0022) 创建文件,则该文件是世界可读的。所以你的 Java 应用程序读取它应该没有问题。
标签: java c++ c linux jakarta-ee