ich versuche, die ausgabe einer (nicht-pb) app (ein dezidierter server für ein spiel, um genau zu sein) in einer konsole mitzuloggen.
zum test habe ich diese (pb-app dedi.exe) geschrieben:
Code: Alles auswählen
If OpenConsole()
For k=0 To 4
PrintN ("iteration "+Str(k)+" end")
Delay(1000)
Next
EndIf
End
kontroll- und startapp:
Code: Alles auswählen
If OpenConsole()
hostnumber.i=1
PrintN ("The dedicated server will try to rehost itself.")
PrintN ("Launching server...")
cid = RunProgram("dedi.exe", "-d dedi", GetCurrentDirectory(), #PB_Program_Open|#PB_Program_Read)
Repeat
If IsProgram(cid)
If ProgramRunning(cid)
While ProgramRunning(cid)
PrintN (ReadProgramString(cid))
Wend
Else
PrintN ("The server has stopped. Rehosting #"+Str(hostnumber)+"...")
hostnumber+1
cid = RunProgram("dedi.exe", "-d dedi", GetCurrentDirectory(), #PB_Program_Open|#PB_Program_Read)
EndIf
Else
PrintN ("The server could not be launched.")
EndIf
Until Quit = 2
EndIf
End
problem 1
dazu benötige ich eine möglichkeit in meiner kontroll- und startapp, während des mitloggens text einzugeben, wie zB "quit". der benötigte command promt input() blockt (unerwünscht), außerdem möchte ich, dass sich der command prompt immer auf der letzten zeile des konsolenfensters befindet. ich möchte eine art zweigeteilte konsole erstellen, in den oberen 80% soll der mitgeloggte text des zu überwachenden programms stehn, in den unteren 20% der "fixierte" command prompt.
problem 2
die kommunikation mit dem zu überwachenden programm gestaltet sich als schwierig. ich möchte den weg über kontrollfiles vermeiden (user gibt command in überwachungsapp ein, wird als file gespeichert, periodisches einlesen des files durch die server-app). ich habe das connect-flag in der runProgram-api gefunden, aber selbst, wenn ich es verstünde (beispiel-code scheint es dafür nicht zu geben), könnte ich einen realtime game server ja nicht anhalten und drauf warten lassen, bis der user irgenwas eingibt. hab ich einen denkfehler oder gibt es (k)einen schlaueren weg dafür?
vielen dank für eure mühe