Execute o programa C em mintty na linha de comando do Windows

Execute o programa C em mintty na linha de comando do Windows

Quero executar um programa C em mintty e desviar o stderrfluxo de saída para um arquivo, debug.txt. Isso pode ser feito usando:

./zombie_jump 2>debug.txt

No entanto, estou tendo problemas para iniciar isso na linha de comando do Windows.

mintty -s 70,55 ./zombie_jump 2>debug.txt

se comporta como se o 2>debug.txtcomando tivesse sido deixado de fora (executando o programa, mas não desviando o fluxo de erros), e

mintty -s 70,55 "./zombie_jump 2>debug.txt"

se comporta como se eu tivesse enviado "./zombie_jump 2>debug.txt", produzindo o erro Failed to run ./zombie_jump 2>debug.txt: No such file or directory.

Qual comando devo usar?

Editar:

mintty -s 70,55 './zombie_jump 2>debug.txt'

retorna Failed to run ./zombie_jump : No such file or directorye cria um arquivo chamado debug.txt'.

Responder1

O erro aqui é bastante fácil de entender: minttynão encaminha a saída do seu programa para (presumivelmente) cmd, onde o redirecionamento de saída está configurado. Em vez disso, ele exibe a saída em sua própria janela GUI. Afinal, é para isso que um emulador de terminal foi projetado. :)

O redirecionamento de saída é um recurso do shell. Se você apenas executar mintty my_command, não estará usando nenhum shell. Em vez disso, minttyinicia diretamente o my_command.

Se você citar "my_command 2>out.err", você está dizendo minttypara procurar um comando com esse nome (completo). É equivalente a digitar "my_command 2>out.err"um shell normal do Linux. Não funcionará de qualquer maneira.

Agora que estabelecemos que é um recurso de shell, está claro que precisamos de um shell. Uma escolha comum seria Bash. Bash pode receber uma string de comando para ser executada quando for iniciado, assim:

bash -c "my_command 2>out.err"

Isso significa que podemos usá-lo assim com mintty:

mintty /bin/bash -c "my_command 2>out.err"

Na minha máquina, o shell Cygwin Bash iniciado dessa forma herda o diretório de trabalho que tenho no arquivo cmd.

informação relacionada