Вы не печатаете код test.go
, поэтому это сложно судить. Например, он спит между отпечатками?
Разбитый труба будет happpen из-за одной из программ в цепи труб:
a.exe|b.exe|c.exe|d.exe
заканчивается рано. Либо test.go
заканчивается, когда голова все еще ожидает ввод или, скорее, головка заканчивается перед test.go
заканчивается бегом. Тем более, что по умолчанию для головы 10 строк.
Тест на который будет делать go run test.go |head -20
и посмотреть, если вы получаете сломанную трубу после печати 20.
Я не был в состоянии повторить это в C++, и не знаете, идти. Если это результат выполнения run runtime, я предлагаю вам попробовать поймать SIGPIPE в вашем коде и спокойно завершить работу. (Не имеет значения, какой язык на самом деле вы, процесс тот же, что и синтаксис.)
В противном случае это больше bash/zsh/любая оболочка du jour. Перед запуском команды make обработчик сигнала для SIGPIPE должен выйти из строя.
Вы попробовали 'go run test.go 2>/dev/null | head'? – toth
это работает! Благодарю. –
Я сделал 'go run test.go | head 2>/dev/null' –