Originalmente eu tinha um comando como este (no Linux)
daemon flag & app flag
No entanto, no Windows bc daemon nunca termina, o aplicativo nunca inicia. Então eu escrevi isso em vez disso
start /B daemon flag & app flag
Isso parece funcionar. Agora eu gostaria de correr daemon flag | app2 flags
, mas tudo que faço reclama da inexistência do daemon e de outros problemas. Eu descubro se eu coloco daemon flag | app2 flags
e file.bat
, start /B file.bat
em vez disso, parece fazer o que eu quero. Mas isso parece hackeado.
Como executo daemon flag | app2 flags
em segundo plano e app flag
imediatamente? Essa solução alternativa file.bat é minha única opção?
Responder1
Acho que o seguinte faz o que você deseja:
start /B %comspec% /c "daemon flag | app2 flags" & app flag
Isso dá uma nova encarnação do cmd
shell, rodando em segundo plano e manipulando o pipe, o que é feito implicitamente tanto pelo uso de start
um arquivo em lote quanto pelo comando equivalente do Linux.
É claro que haverá confusão se app2
ambos app
gerarem saída, e ainda mais confusão se ambos solicitarem entrada do console (igualmente verdadeiro para Linux e Windows).