haggi hat geschrieben:hier mal der für mich relevante teil.
Code: Alles auswählen
id1 = RunProgram("/usr/local/bin/l4m320t_tool","-u ","/usr/local/bin/ ", #PB_Program_Open| #PB_Program_Read )
If id1
While ProgramRunning(id1)
If AvailableProgramOutput(id1)
AddElement(konsoleauslesen())
konsoleauslesen()\data = ReadProgramString(id1)
Debug konsoleauslesen()\data
EndIf
Wend
EndIf
Wenn man in die Hilfe zu
RunProgram() kuckt wird deutlich, dass das gewünschte Programm
1. irgendwie das Flag
#PB_Program_Error verwenden sollte
2. irgendwo die Funktion
ReadProgramError() enthalten sollte
Beides hast Du in Deinem Code nicht 'mal versucht zu benutzen ...
haggi hat geschrieben:wie du siehst enable expliziet steht nicht dabei.
Ja, schade! Nach dem was ich oben schrieb ist doch klar, dass man es verwenden sollte!
NicTheQuick hat geschrieben:Wieso bietet man nicht für beide Outputstreams die selben Möglichkeiten?
Das verstehe ich auch nicht.
Immerhin lässt sich die Sache mit folgenden zwei kleinen Beispielprogrammen demonstrieren (getestet mit PB 4.51 unter Ubuntu 10.10 x86).
Das Programm "WriteStdErr" habe ich als Executable kompiliert, und dann das Programm "ReadStdErr" in der PB-IDE ausgeführt.
Code: Alles auswählen
; -- Programm "WriteStdErr"
; Executable-Format: Console
; Öffnet ein Terminal-Fenster und schreibt die
; Zahlen 1 bis 10 in jeweils eine Zeile.
EnableExplicit
Define i
OpenConsole()
For i = 1 To 10
ConsoleError(Str(i))
Delay(200)
Next
CloseConsole()
Code: Alles auswählen
; -- Programm "ReadStdErr"
; Executable-Format: Console
; Startet das Programm "WriteStdErr", liest dessen
; Ausgabe und schreibt sie in PBs Debug-Fenster.
EnableExplicit
Define id, x$
id = RunProgram("./WriteStdErr", "", "", #PB_Program_Open | #PB_Program_Error)
If id
While ProgramRunning(id)
x$ = ReadProgramError(id)
If x$ <> ""
Debug x$
EndIf
Wend
CloseProgram(id)
EndIf
Grüße, Nino