通过 ProcessBuilder 在环境变量中设置空终止字符串
Setting null terminated string in environment variables via ProcessBuilder
正如标题所述,我正在尝试设置一个具有多个空终止文件名的环境变量。
我的代码如下所示:
ProcessBuilder pb = new ProcessBuilder(execCmd);
Map<String, String> env = pb.environment();
env.clear();
String storedFiles = "";
Iterator<Attributes> storedSequence = info.getSequence().iterator();
while (storedSequence.hasNext()) {
storedFiles += storedSOPSequence.next().getFilename() + "[=10=]";
}
env.put("StoredFiles", storedFiles);
try {
pb.start();
} catch (Exception e) {
}
但是我运行进入了以下异常:
Exception in thread "pool-1-thread-2" java.lang.IllegalArgumentException:
Invalid environment variable value: "/tmp/tmp.DXrJMdJmbW/53cd50f9"
有办法实现吗?
您不应使用空值作为字符串中的分隔符,尤其是在将字符串传递给操作系统时。
O/S 将 null 解释为字符串结束标记,之后可能不会复制任何内容。
改用其他控制字符(例如“\r”)。
正如标题所述,我正在尝试设置一个具有多个空终止文件名的环境变量。
我的代码如下所示:
ProcessBuilder pb = new ProcessBuilder(execCmd);
Map<String, String> env = pb.environment();
env.clear();
String storedFiles = "";
Iterator<Attributes> storedSequence = info.getSequence().iterator();
while (storedSequence.hasNext()) {
storedFiles += storedSOPSequence.next().getFilename() + "[=10=]";
}
env.put("StoredFiles", storedFiles);
try {
pb.start();
} catch (Exception e) {
}
但是我运行进入了以下异常:
Exception in thread "pool-1-thread-2" java.lang.IllegalArgumentException:
Invalid environment variable value: "/tmp/tmp.DXrJMdJmbW/53cd50f9"
有办法实现吗?
您不应使用空值作为字符串中的分隔符,尤其是在将字符串传递给操作系统时。
O/S 将 null 解释为字符串结束标记,之后可能不会复制任何内容。
改用其他控制字符(例如“\r”)。