DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=28565>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=28565 org.apache.tools.ant.taskdefs.Execute ------- Additional Comments From [EMAIL PROTECTED] 2004-04-26 22:28 ------- After having gone to the trouble of locating a precompiled lsof executable because I couldn't get it to install, I still don't see what this example is attempting to prove. My slightly modified version of your buildfile: <project name="ShowBug" default="bug"> <property name="ksh" value="/usr/bin/ksh" /> <property name="lsof" value="/usr/local/bin/lsof" /> <target name="pid"> <echo file="getpid" > echo PPID=$PPID </echo> <exec executable="${ksh}" output="pidout" > <arg line="getpid " /> </exec> <property file="pidout" /> <echo message="I am process ${PPID}" /> </target> <target name="lsofa" depends="pid"> <!-- send these to output files for easy comparison --> <exec executable="${lsof}" output="lsofa"> <arg line=" -p ${PPID}" /> </exec> </target> <!-- in a real buildfile, having both targets depend on pid would be okay as long as they are not invoked separately from the commandline, in which case you'd get an insignificant warning --> <target name="lsofb" depends="pid"> <exec executable="${lsof}" output="lsofb"> <arg line=" -p ${PPID}" /> </exec> </target> <target name="reproduce"> <exec executable="/bin/true" /> <exec executable="/bin/true" /> <exec executable="/bin/true" /> <exec executable="/bin/true" /> <exec executable="/bin/true" /> <exec executable="/bin/true" /> <exec executable="/bin/true" /> <exec executable="/bin/true" /> <exec executable="/bin/true" /> <exec executable="/bin/true" /> </target> <target name="bug" depends="lsofa,reproduce,lsofb" /> <target name="clean"> <delete> <fileset dir="${basedir}" includes="lsofa,lsofb" /> </delete> </target> </project> When I save to showbug.xml and use the following command line: ant -f showbug.xml && wc -l lsofa lsofb wc tells me: 75 lsofa 75 lsofb 150 total So if the example is intended to show me that there are more files open after the reproduce target is called, I can't see that it does. In the case of <exec> (ExecTask), its streams are closed when Redirector.complete() is called. Inspection of AbstractCVSTask shows that its output and error streams (if not null) are closed in a finally block at the end of runCommand(), so this example also does not seem to hold water. As you say, in most cases it would be fine to have the PumpStreamHandler's StreamPumpers automatically close their streams. But as long as the job is done somewhere there should be no problem. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]