Share and close /dev/null filediscriptors.
--- a/UnixOperatingSystem.st Wed Jul 10 13:11:43 2002 +0200
+++ b/UnixOperatingSystem.st Wed Jul 10 13:46:34 2002 +0200
@@ -3830,36 +3830,38 @@
Use #monitorPid:action: for synchronization and exec status return,
or #killProcess: to stop it."
- |in out err shellAndArgs rslt|
+ |nullStream in out err shellAndArgs rslt|
aCommandString isNil ifTrue:[^ nil].
(in := anExternalInStream) isNil ifTrue:[
- in := '/dev/null' asFilename readStream
+ nullStream := Filename nullDevice readWriteStream.
+ in := nullStream.
].
(out := anExternalOutStream) isNil ifTrue:[
- out := '/dev/null' asFilename writeStream
+ nullStream isNil ifTrue:[nullStream := Filename nullDevice writeStream].
+ out := nullStream.
].
(err := anExternalErrStream) isNil ifTrue:[
- anExternalOutStream isNil ifTrue:[
- err := out
- ] ifFalse:[
- err := '/dev/null' asFilename writeStream
- ]
+ err := out
].
shellAndArgs := self commandAndArgsForOSCommand:aCommandString.
rslt := self
- exec:(shellAndArgs at:1)
- withArguments:(shellAndArgs at:2)
- fileDescriptors:(Array with:in fileDescriptor
- with:out fileDescriptor
- with:err fileDescriptor)
- closeDescriptors:nil
- fork:true
- newPgrp:true "/ false
- inDirectory:dir.
+ exec:(shellAndArgs at:1)
+ withArguments:(shellAndArgs at:2)
+ fileDescriptors:(Array with:in fileDescriptor
+ with:out fileDescriptor
+ with:err fileDescriptor)
+ closeDescriptors:nil
+ fork:true
+ newPgrp:true "/ false
+ inDirectory:dir.
+
+ nullStream notNil ifTrue:[
+ nullStream close.
+ ].
^ rslt
@@ -3882,7 +3884,7 @@
The following will no longer work. monitorPid has disappeared
pid notNil ifTrue:[
- Processor monitorPid:pid action:[:OSstatus | sema signal ].
+ Processor monitorPid:pid action:[:OSstatus | sema signal ].
].
in close.
out close.
@@ -10441,7 +10443,7 @@
!UnixOperatingSystem::FilePointerHandle class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.123 2002-06-17 13:15:14 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.124 2002-07-10 11:46:34 stefan Exp $'
! !
!UnixOperatingSystem::FilePointerHandle methodsFor:'release'!
@@ -12061,6 +12063,6 @@
!UnixOperatingSystem class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.123 2002-06-17 13:15:14 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.124 2002-07-10 11:46:34 stefan Exp $'
! !
UnixOperatingSystem initialize!