{
my-mono-app 2>&1 >&3 3>&1 | awk '
{print}
/ref unused/ {print "Exiting."; exit(1)}' >&2
} 3>&1
awk
sairá assim que ler uma dessas mensagens, fazendo com que my-mono-app
seja eliminado por SIGPIPE
da próxima vez que tentar escrever algo no stderr.
Não use mawk
lá que buffers stdin de maneira estúpida (ou use -W interactive
).
Se o aplicativo não morrer no SIGPIPE, você terá que matá-lo de alguma forma.
Um caminho pode ser:
{ sh -c 'echo "$$" >&2; exec my-mono-app' 2>&1 >&3 3>&1 | awk '
NR == 1 {pid = $0; next}
{print}
/ref unused/ && ! killed {
print "Killing",pid
killed=1
system("kill " pid)
}' >&2
} 3>&1
Substitua por "kill "
por "kill -s KILL "
se ainda não funcionar.