RunProgramLinux for more commands

Share your advanced PureBasic knowledge/code with the community.
User avatar
oryaaaaa
Addict
Addict
Posts: 825
Joined: Mon Jan 12, 2004 11:40 pm
Location: Okazaki, JAPAN

RunProgramLinux for more commands

Post by oryaaaaa »

It uses it to execute two or more commands.
target: $ /bin/dmesg;cat /proc/scsi/scsi
PureBasic 4.0 Linux Beta1

Code: Select all

Procedure.s RunProgramLinux(shell_cmd.s, Separate.s="",timeout=30000)
  Protected file, run_status, filename.s, PreBuf.s, run_tmp.b, Buf.s
         filename = FormatDate("RunProgramLinux_%yyyy%mm%dd%hh%ii%ss.sh",Date())
         file = CreateFile(#PB_Any, filename)         
         WriteString(file, shell_cmd+";echo "+Chr(34)+filename+Chr(34)) : CloseFile(file)
         run_status = RunProgram("/bin/bash", filename,"", #PB_Program_Open|#PB_Program_Read)
           If run_status
                WaitProgram(run_status,timeout)
                Repeat
                   PreBuf = ReadProgramString(run_status)
                   If PreBuf=""
                     ReadProgramData(run_status, @run_tmp, 1)
                     PreBuf=""
                     Delay(100)
                   Else
                   If Separate=""
                      Buf + Chr(13) + Chr(10) + PreBuf
                   Else
                      Buf + Chr(13) + Chr(10) + Right(PreBuf, Len(PreBuf) - FindString(PreBuf, Separate, 0) )
                  EndIf
                   EndIf
                Until FindString(PreBuf,filename,0)>0
                DeleteFile(filename)
                ProcedureReturn ReplaceString(Buf, filename, "")
            Else
               ProcedureReturn ""
           EndIf
EndProcedure

Code: Select all

debug RunProgramLinux("/bin/dmesg;echo "+Chr(34)+Chr(13)+Chr(10)+Chr(34)+";cat /proc/scsi/scsi", "]")
Thanks