Pelo que entendi, todos os processos canalizados iniciam mais ou menos ao mesmo tempo. Geralmente, os processos em um pipeline irão ler de stdin ou gravar em stdout (ou ambos), e a conclusão da E / S irá ditar quando o processo terminar.
Para processos que não têm saída (como touch
) ou qualquer entrada padrão (como cat
ao operar em um arquivo), eu geralmente esperaria que suas conexões de pipe fossem ignoradas pelo programa.
Então, basicamente, você teria três comandos sendo executados em paralelo:
touch ~/scratches/scr6.txt
,
%código%,
e cat ~/scr.txt > ~/scratches/scr6.txt
.
É provavelmente dependente do sistema operacional se o comando 2 falharia com um erro se ~ / scr.txt ainda não existir, já que estaria em uma condição de corrida com o comando 3. Os comandos 1 e 2 também estão em uma condição de corrida. , mas a corrida só iria acabar afetando o ctime / mtime / atime do arquivo.