Ursprünglich hatte ich einen Befehl wie diesen (unter Linux)
daemon flag & app flag
Unter Windows wird der BC-Daemon jedoch nie beendet, die App wird nie gestartet. Also habe ich stattdessen Folgendes geschrieben
start /B daemon flag & app flag
Das scheint zu funktionieren. Jetzt möchte ich es ausführen, daemon flag | app2 flags
aber alles, was ich starte, beschwert sich über nicht vorhandene Daemons und andere Probleme. Ich finde heraus, ob ich es einsetze daemon flag | app2 flags
und file.bat
es start /B file.bat
stattdessen das tut, was ich will. Aber das fühlt sich nach Hack an.
Wie kann ich es daemon flag | app2 flags
im Hintergrund und app flag
sofort ausführen? Ist dieser Workaround für file.bat meine einzige Option?
Antwort1
Ich denke, das Folgende bewirkt, was Sie möchten:
start /B %comspec% /c "daemon flag | app2 flags" & app flag
Dadurch entsteht eine neue Inkarnation der Shell, die im Hintergrund läuft und die Pipe verwaltet, was implizit sowohl durch die Verwendung einer Batchdatei als auch durch den entsprechenden Linux-Befehl cmd
erfolgt .start
Es entsteht natürlich Verwirrung, wenn app2
und app
beide eine Ausgabe erzeugen, und noch mehr Verwirrung entsteht, wenn beide eine Konsoleneingabe anfordern (das gilt für Linux und Windows gleichermaßen).