Code archives/Miscellaneous/Simple tprocess wrapper. eof() readline()
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Thanks to: Seb http://www.blitzbasic.com/Account/showuser.php?id=1793 DJWoodgate http://www.blitzbasic.com/Account/showuser.php?id=159 On this topic: http://www.blitzbasic.com/Community/posts.php?topic=68847 Example1: Local temp_proc:tproc = CreateProc("net start MOO_MOO_MOO") While temp_proc.eof() = False If temp_proc.avail() Print "read: " + temp_proc.read() Wend temp_proc.close() Example2: Local temp_proc:tproc = CreateProc("net start MOO_MOO_MOO") While temp_proc.eof() = False If temp_proc.pipeavail() Print "pipe: " + temp_proc.readpipe() If temp_proc.erravail() Print "err: " + temp_proc.readerr() Wend temp_proc.close() | |||||
Import pub.freeprocess Type tproc Extends TProcess Method close:Int() super.close() terminate() End Method Method avail:Int() Return err And pipe And (err.bufferpos Or err.readavail() Or pipe.bufferpos Or pipe.readavail()) End Method Method read:String() If err And (err.bufferpos > 0 Or err.readavail() > 0) Return err.ReadLine().Replace("~r","").Replace("~n","") If pipe And (pipe.bufferpos > 0 Or pipe.readavail() > 0) Return pipe.ReadLine().Replace("~r","").Replace("~n","") End Method Method readpipe:String() If pipe And (pipe.bufferpos > 0 Or pipe.readavail() > 0) Return pipe.ReadLine().Replace("~r","").Replace("~n","") End Method Method readerr:String() If err And (err.bufferpos > 0 Or err.readavail() > 0) Return err.ReadLine().Replace("~r","").Replace("~n","") End Method Method pipeavail:Int() Return pipe And (pipe.bufferpos > 0 Or pipe.readavail() > 0) End Method Method erravail:Int() Return err And (err.bufferpos > 0 Or err.readavail() > 0) End Method Method Eof:Int() If status() = 1 Return False If pipe And pipe.readavail() > 0 Return False If err And err.readavail() > 0 Return False If pipe And pipe.bufferpos > 0 Return False If err And err.bufferpos > 0 Return False Return True End Method Function Create:TProc(ncmd:String,nflags:Int) Local temp_proc:TProc Local infd,outfd,errfd 'do mac speciffic stuff ?MacOS If FileType(ncmd)=2 ncmd :+ "/Contents/MacOS/" + StripExt(StripDir(ncmd)) EndIf ? 'create the proc object temp_proc = New TProc 'setup the proc temp_proc.name = ncmd 'attempt to start the process temp_proc.handle = fdProcess(ncmd,Varptr(infd),Varptr(outfd),Varptr(errfd),nflags) If Not temp_proc.handle Return Null 'creat teh process pipes temp_proc.pipe = TPipeStream.Create(infd,outfd) temp_proc.err = TPipeStream.Create(errfd,0) 'add process to process list If Not ProcessList ProcessList = New TList ProcessList.AddLast temp_proc 'return the proc object Return temp_proc End Function End Type Function CreateProc:tproc(ncmd:String,nhidden:Int = True) Return tproc.create(ncmd,nhidden) End Function |
Comments
None.
Code Archives Forum