No hay "STDIN de A" útil en este escenario. El STDIN es siempre el de su aplicación . a, b y c escriben en su STDOUT, los paréntesis los juntan y la canalización conecta el resultado a la STDIN de su aplicación. Donde, sí, todos esos STDOUT pueden entrar en conflicto (uno tras otro, no entrelazados ).
( a ; b; c ) | yourapp
o
( a && b && c ) | yourapp
No está claro si tiene a, b y c dentro de un script de shell ("el script de shell de esa aplicación" )y si es el mismo script para todos. Si no es así, entonces los scripts son sus "aplicaciones" y se encuentra en el escenario anterior. Si es así, debe tener algo como
while...; do
read something
a
b
c
done
En el escenario anterior, la "lectura" leerá el STDIN común de la aplicación externa, nuevamente en orden, posiblemente bloqueando si no hay nada que leer, pero no veo cómo A puede insertar algo allí.
No estoy seguro, pero sospecho que este podría ser un caso en el que las canalizaciones con nombre o los intermediarios de mensajes podrían resultar útiles.