java processbuilder中字符串参数的最大长度

java processbuilder中字符串参数的最大长度,java,processbuilder,Java,Processbuilder,我知道从命令行/终端执行应用程序时存在字符串限制,这取决于操作系统。 但是,如果我们使用Java ProcessBuilder来执行应用程序,在Java ProcessBuilder中是否有作为参数传递的最大字符串长度 ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2"); 谢谢Java没有限制长度。您可以传递n个参数,但这取决于操作系统 来自Java文档的描述 使用指定的操作系统程序和参数构造pr

我知道从命令行/终端执行应用程序时存在字符串限制,这取决于操作系统。
但是,如果我们使用Java ProcessBuilder来执行应用程序,在Java ProcessBuilder中是否有作为参数传递的最大字符串长度

   ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");

谢谢

Java没有限制长度。您可以传递n个参数,但这取决于操作系统

来自Java文档的描述

使用指定的操作系统程序和参数构造process builder。这是一个方便的构造函数,它将process builder的命令设置为字符串列表,其中包含与命令数组相同的字符串,顺序相同。不检查命令是否对应于有效的操作系统命令


通常,我们在命令行中传递的参数不超过4个,而是将所有内容都保存在文件中,并将文件名作为单个参数提供,然后使用配置文件。

Java不限制长度。您可以传递n个参数,但这取决于操作系统

来自Java文档的描述

使用指定的操作系统程序和参数构造process builder。这是一个方便的构造函数,它将process builder的命令设置为字符串列表,其中包含与命令数组相同的字符串,顺序相同。不检查命令是否对应于有效的操作系统命令


通常,我们不会在命令行中传递超过4个参数,而是将所有内容保存在文件中,并提供文件名作为单个参数,并使用配置文件。

如果查看ProcessBuilder源代码,则流程创建将委托给特定于操作系统的
java.lang.ProcessImpl

例如,Windows版本的
ProcessImpl
在Win API中调用,传递命令行字符串。参数
lpCommandLine
的文档说明:“此字符串的最大长度为32768个字符”


因此,是的,基于创建进程的操作系统功能,将存在特定于操作系统的长度限制。

如果查看ProcessBuilder源代码,进程创建将委托给特定于操作系统的
java.lang.ProcessImpl

例如,Windows版本的
ProcessImpl
在Win API中调用,传递命令行字符串。参数
lpCommandLine
的文档说明:“此字符串的最大长度为32768个字符”


因此,是的,基于创建流程的操作系统功能,会有特定于操作系统的长度限制。

对我来说,这有点可疑。您正在尝试以文本形式传递大文件吗?我们在命令行中传递的参数不超过4个,而是将所有内容都保存在文件中,并提供单个文件名arg@SBI类似的,我想传递一个大的JSON字符串,大概1兆字节左右。这个主意太糟糕了。将它们写入文件,然后流式传输。对我来说,这闻起来很可疑。您正在尝试以文本形式传递大文件吗?我们在命令行中传递的参数不超过4个,而是将所有内容都保存在文件中,并提供单个文件名arg@SBI类似的,我想传递一个大的JSON字符串,大概1兆字节左右。这个主意太糟糕了。将它们写入文件,然后进行流式处理。