proc:system ?

Thursday, 12 October 2017 · 3 messages · last reply 13 Oct 2017
JM
jean-marc Mercier12 Oct 2017 12:19 #
Hello BaseX team, I am an extensive user of the proc:system BaseX command (and looking forward for proc:fork !). I am using this command with in-memory arguments, it means that my way of using it is : proc:system("my_exe", $my_arguments_for_exe) $my_arguments_for_exe is an xml node serialized to string by BaseX. As my test are getting more complex, the size of $my_arguments_for_exe are increasing. It seems that we are reaching a limit now, since the compiler refuses to pass arguments : "Stopped at CoDeFi_Interface.xqm, 44/22: [BXPR9999] Cannot run program "C:\Jiheme\scientifique\recherche\CoDeFi\CoDeFi\CoDeFi.exe": CreateProcess error=206, Nom de fichier ou extension trop long " Is there a way to bypass this ? Thank you for your answer, Cheers, Jean-Marc
AB
Andy Bunce13 Oct 2017 10:42 #
Hi Jean-Marc, I have hit this kind of issue before and it is not BaseX specific. The problem is Windows(tm) limits [1] This is compounded by the Java call from proc:system passing in a copy of the environment of the current process [2]. Mine has built up a large class path over time with my lib/custom experiements. My proc:property("java.class.path") is nearly 4k You could try to "clean" your classpath and switch your file locations to shorter paths /Andy [1] https://support.microsoft.com/en-gb/help/830473/command-prom pt-cmd--exe-command-line-string-limitation [2] https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html# environment()
Quoted text · jean-marc Mercier · 28 lines
On 12 October 2017 at 11:19, jean-marc Mercier <jeanmarc.mercier at gmail.com> wrote: > Hello BaseX team, > > I am an extensive user of the proc:system BaseX command (and looking > forward for proc:fork !). > I am using this command with in-memory arguments, it means that my way of > using it is : > proc:system("my_exe", $my_arguments_for_exe) > > $my_arguments_for_exe is an xml node serialized to string by BaseX. As my > test are getting more complex, the size of $my_arguments_for_exe are > increasing. It seems that we are reaching a limit now, since the compiler > refuses to pass arguments : > > "Stopped at CoDeFi_Interface.xqm, 44/22: > [BXPR9999] Cannot run program "C:\Jiheme\scientifique\ > recherche\CoDeFi\CoDeFi\CoDeFi.exe": CreateProcess error=206, Nom de > fichier ou extension trop long > " > Is there a way to bypass this ? > > Thank you for your answer, > > Cheers, > > Jean-Marc >
JM
jean-marc Mercier13 Oct 2017 15:46 #
Andy, Thank you for your answer. Indeed, the length of my parameters are now much more than the Windows limit. I guess that creating a temporary file, then passing the name of the file as parameters should solve the issue. Cheers, Jean-Marc 2017-10-13 10:42 GMT+02:00 Andy Bunce <bunce.andy at gmail.com>:
Quoted text · Andy Bunce · 49 lines
> Hi Jean-Marc, > > I have hit this kind of issue before and it is not BaseX specific. The > problem is Windows(tm) limits [1] > This is compounded by the Java call from proc:system passing in a copy of > the environment of the current process [2]. > Mine has built up a large class path over time with my lib/custom > experiements. My `proc:property("java.class.path")` is nearly 4k > > You could try to "clean" your classpath and switch your file locations to > shorter paths > > /Andy > > [1] https://support.microsoft.com/en-gb/help/830473/command-prom > pt-cmd--exe-command-line-string-limitation > [2] https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessB > uilder.html#environment() > > On 12 October 2017 at 11:19, jean-marc Mercier <jeanmarc.mercier at gmail.com > > wrote: > >> Hello BaseX team, >> >> I am an extensive user of the proc:system BaseX command (and looking >> forward for proc:fork !). >> I am using this command with in-memory arguments, it means that my way >> of using it is : >> proc:system("my_exe", $my_arguments_for_exe) >> >> $my_arguments_for_exe is an xml node serialized to string by BaseX. As my >> test are getting more complex, the size of $my_arguments_for_exe are >> increasing. It seems that we are reaching a limit now, since the compiler >> refuses to pass arguments : >> >> "Stopped at CoDeFi_Interface.xqm, 44/22: >> [BXPR9999] Cannot run program "C:\Jiheme\scientifique\recherche\CoDeFi\CoDeFi\CoDeFi.exe": >> CreateProcess error=206, Nom de fichier ou extension trop long >> " >> Is there a way to bypass this ? >> >> Thank you for your answer, >> >> Cheers, >> >> Jean-Marc >> > >

⚡Generated with XQuery