probleme mit stderr

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
haggi
Beiträge: 77
Registriert: 04.01.2007 21:54

probleme mit stderr

Beitrag von haggi »

Hallo liebe pb linuxer :-)

ich habe ien problem bei meinem ersten pb linux projekt.

ich möchte mittels runprogramm ein stderr abfangen. die flag wurde auch übergeben mittels #PB_Program_Open| #PB_Program_Read | #PB_Program_Error

das problem ist, dass der error nicht abgefufen wird. mache ich irgendetwas falsch, was ihr hier seht?

ich habe im source des anderen proggies nachgeschaut, von dem ich das abgrabbe, laut dem source ist es so, dass er dass in die stderr schriebt.


vielen dank für eure hilfe

gruß haggi!
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: probleme mit stderr

Beitrag von Nino »

Steht EnableExplicit am Beginn Deines Programms? Wenn nicht dann kann es gut sein, dass Du einen Tippfehler z.B. in einem Variablennamen hast.
haggi hat geschrieben:mache ich irgendetwas falsch, was ihr hier seht?
Wir sehen hier nicht viel. :D
Am besten postest Du hier mal den relevanten Teil Deines Codes.

Grüße, Nino
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: probleme mit stderr

Beitrag von ts-soft »

Nino hat geschrieben:
haggi hat geschrieben:mache ich irgendetwas falsch, was ihr hier seht?
Wir sehen hier nicht viel. :D
Langsam nimmt das hier ja Überhand, fragen ohne notwendige Infos.
Es gibt hier keine Hellseher! Also bitte etwas Zeit nehmen und vorher überlegen, ob die
Infos reichen, den Fehler zu erkennen.

Ansonsten fangen hier nur Ratespiele an, was zwar Unterhaltsam sein könnte, aber dann
eher in den Offtopic passt.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
haggi
Beiträge: 77
Registriert: 04.01.2007 21:54

Re: probleme mit stderr

Beitrag von haggi »

Hallo Nino,

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
     
wie du siehst enable expliziet steht nicht dabei.
leider musste ich feststellen, dass du recht hattest, hatte wirklich nett viel dabei gehabt :-) sorry! hoffe das reicht dir.


gruß haggi
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: probleme mit stderr

Beitrag von NicTheQuick »

An dieser Stelle möchte ich sagen, dass PB da leider ein bisschen inkonsequent ist. Du brauchst folgenden Befehl: 'ReadProgramError()'.
Aber irgendwie scheint es kein entsprechendes 'AvailableProgramError()' oder 'ReadProgramErrorData()' zu geben. Wieso bietet man nicht für beide Outputstreams die selben Möglichkeiten?
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: probleme mit stderr

Beitrag von Nino »

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
Antworten