[英]Maximum length of string argument in java processbuilder
我知道从命令行/终端执行应用程序时,存在字符串限制,具体取决于操作系统。
但是,如果我们使用Java ProcessBuilder执行应用程序,那么在Java ProcessBuilder中是否有任何最大字符串长度作为参数传递?
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
谢谢
如果查看ProcessBuilder源代码,则将流程创建委托给特定于OS的java.lang.ProcessImpl
。
例如,Windows版本的ProcessImpl
在Win API中调用命令行中的CreateProcess 。 参数lpCommandLine
的文档指出:“此字符串的最大长度为32,768个字符”。
因此,是的,基于创建过程的OS功能,将存在特定于OS的长度限制。
Java不限制长度。 您可以传递n个参数,但这取决于操作系统。
Java Doc ProcessBuilder中的描述
使用指定的操作系统程序和参数构造一个流程生成器。 这是一个方便的构造函数,用于将流程生成器的命令设置为包含与命令数组相同的字符串的字符串列表,并且顺序相同。 不检查命令是否对应于有效的操作系统命令。
通常,我们在命令行中传递的参数不超过4个,而是将所有内容保留在文件中,并提供文件名作为单个参数并使用配置文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.