From: Updike, C. <Cla...@jh...> - 2006-05-05 14:57:05
|
Your mistake (a common one) is thinking that Runtime.exec() Is acting as as a shell interpreter, which it is not. This article cover the problem: http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps_p.html See the "Runtime.exec() is not a command line" heading... -Clark > -----Original Message----- > From: jyt...@li...=20 > [mailto:jyt...@li...] On Behalf=20 > Of Dong, Ming > Sent: Friday, May 05, 2006 10:49 AM > To: jyt...@li... > Cc: Jeff Emanuel > Subject: [Jython-users] Problem in Java Runtime >=20 > I used java Runtime to execute the unix command, the code is=20 > like def runCommand (cmd): > runtime =3D Runtime.getRuntime() > process =3D runtime.exec(cmd) > breader =3D > BufferedReader(InputStreamReader(process.getInputStream())) > eof =3D 0 > while not eof: > inline =3D breader.readLine() > if not inline: > break > print inline >=20 > The function works fine but failed when the command contains=20 > pipe such as "ls -l | wc", the command with pipe returns nothing. >=20 > Any suggestion ? >=20 > Thanks a lot! >=20 > Ming Dong > 781-302-5183 >=20 >=20 >=20 >=20 > ------------------------------------------------------- > Using Tomcat but need to do more? Need to support web=20 > services, security? > Get stuff done quickly with pre-integrated technology to make=20 > your job easier Download IBM WebSphere Application Server=20 > v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=3Dk&kid=120709&bid&3057&dat=121642 > _______________________________________________ > Jython-users mailing list > Jyt...@li... > https://lists.sourceforge.net/lists/listinfo/jython-users >=20 |
From: Diez B. R. <de...@we...> - 2006-05-05 15:05:17
|
On Friday 05 May 2006 16:49, Dong, Ming wrote: > I used java Runtime to execute the unix command, the code is like > def runCommand (cmd): > runtime = Runtime.getRuntime() > process = runtime.exec(cmd) > breader = > BufferedReader(InputStreamReader(process.getInputStream())) > eof = 0 > while not eof: > inline = breader.readLine() > if not inline: > break > print inline > > The function works fine but failed when the command contains pipe such > as > "ls -l | wc", the command with pipe returns nothing. > > Any suggestion ? Several: 1) This is JAVA, not jython-specific. You should additionally goggle/ask for solutions in JAVA-centric forums. 2) Since | is a literal interpreted by a UNIX-shell but JAVA is OS-agnostic, there is no UNIX-shell involved in the execution of that statement. Hence the failure. The same applies to glob- and backtick-expansion. Maybe making cmd = "/usr/bin/bash" and putting your above command sequence in a script and then invoke bash with that script might help. But I'm not sure. Diez |
From: Dong, M. <MDong@StateStreet.com> - 2006-05-05 15:23:46
|
I wrote a java code which uses Runtime.exec to execute the same command "ls -l | wc", it is working! So, I thought it might be the jython specific problem. Thanks. Ming Dong -----Original Message----- From: Updike, Clark [mailto:Cla...@jh...]=20 Sent: Friday, May 05, 2006 10:57 AM To: Dong, Ming; jyt...@li... Cc: Jeff Emanuel Subject: RE: [Jython-users] Problem in Java Runtime Your mistake (a common one) is thinking that Runtime.exec() Is acting as as a shell interpreter, which it is not. This article cover the problem: http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps_p.html See the "Runtime.exec() is not a command line" heading... -Clark > -----Original Message----- > From: jyt...@li...=20 > [mailto:jyt...@li...] On Behalf=20 > Of Dong, Ming > Sent: Friday, May 05, 2006 10:49 AM > To: jyt...@li... > Cc: Jeff Emanuel > Subject: [Jython-users] Problem in Java Runtime >=20 > I used java Runtime to execute the unix command, the code is=20 > like def runCommand (cmd): > runtime =3D Runtime.getRuntime() > process =3D runtime.exec(cmd) > breader =3D > BufferedReader(InputStreamReader(process.getInputStream())) > eof =3D 0 > while not eof: > inline =3D breader.readLine() > if not inline: > break > print inline >=20 > The function works fine but failed when the command contains=20 > pipe such as "ls -l | wc", the command with pipe returns nothing. >=20 > Any suggestion ? >=20 > Thanks a lot! >=20 > Ming Dong > 781-302-5183 >=20 >=20 >=20 >=20 > ------------------------------------------------------- > Using Tomcat but need to do more? Need to support web=20 > services, security? > Get stuff done quickly with pre-integrated technology to make=20 > your job easier Download IBM WebSphere Application Server=20 > v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=3Dk&kid=120709&bid&3057&dat=121642 > _______________________________________________ > Jython-users mailing list > Jyt...@li... > https://lists.sourceforge.net/lists/listinfo/jython-users >=20 |