[Gambas-user] Stopping a CLI program

Tobias Boege taboege at ...626...
Tue Dec 10 21:42:35 CET 2013


On Tue, 10 Dec 2013, John Rose wrote:
> Tobias,
> I just realised that a post that I made on the 'Line continuation' 
> thread is better in this thread. The details are:
> I liked your ideas of:
> Dim aExec As String[]
> Dim sRes As String
> aExec = ["cat", "/proc/meminfo"]
> ' Use aExec.Add() to add more arguments
> Exec aExec To sRes
> 
> and (thread 'Stopping a CLI program):
> Print #hFfmpeg, "q"
> if you opened it For Output...
> 
> Currently I have:
> Private hffmpeg as Process
> Private sOutput As String
> ...
> Dim aExec As String
> ...
> aExec = ["ffmpeg"]
> aExec.Add("-f x11grab")
> aExec.Add("-s " & iScreenWidth & "x" & iScreenHeight)
> aExec.Add("-i :0.0+" & iScreenLeft & "," & iScreenTop & "+nomouse")
> aExec.Add("-f pulse")
> aExec.Add("-i " & "alsa_output.pci-0000_00_1b.0.analog-stereo.monitor")
> aExec.Add("-f " & sFileFormat)
> aExec.Add("-vcodec" & svcodec)
> aExec.Add("-r 25")
> aExec.Add("-vb 1024k")
> aExec.Add("-acodec" & sacodec)
> aExec.Add("-ac 2")
> aExec.Add("-ab 128k")
> aExec.Add("-async 1")
> aExec.Add("-threads " & bThreads)
> aExec.Add("-y")
> aExec.Add(sVideoPath)
> hffmpeg = Exec aExec Wait For Read As "Messages"
> ...
> Public Sub Messages_Read()
>    Dim sLine As String
>    Read #Last, sLine, -256
>    sOutput &= sLine
> End
> Public Sub Messages_Kill()
>    Print sOutput
> End
> ...
> 
> Ideally, I'd like to add "Write" to the Exec line (as it seems to me that it won't go wrong if ffmpeg 'corrupts' the output file in comparison to using"hffmpeg.Kill()") , so that I can use (in a Stop button's click event):
> Print #hffmpeg, "q"
> 

I don't understand anything.

> However, I can't get the syntax right. I've tried 'Write' after 'For', 'Write' after 'Messages', 'For Write' between 'aExec' & 'For'. Is it possible to do this?
> 
> I don't understand the explanation of using Input instead of Read & 
> Output instead of Write (i.e. "If you use the *INPUT* and *OUTPUT* 
> keywords instead of *READ* and *WRITE*, then the process is executed 
> inside a virtual terminal. The process will think running inside a true 
> terminal.virtual terminal."). What are the implications of this, e.g. 
> for my app?

I attached a program that stops ffmpeg printing "q" to it. Hope it helps...

Regards,
Tobi




More information about the User mailing list