ho un problema singolare....
devo lanciare in un dato ordine 5 processi in background....
uno di loro (il 3° per la precisione) controlla lo stdin e alla pressione di un tasto avvia determinate funzioni.
Il problema è che quando lancio in backgraund un processo, con il comando
./processoX &
a volte mi ritorna immediatamente la shell, altre volte invece non ritorna immediatamente la shell, ma occorre dare un invio...
è come se il processo non fosse ancora in bg, ma lo diventasse alla pressione di un tasto.
solitamente questo comportamento non mi crea problemi, ma al lancio del 3° processo si!!
xchè se ritorna immediatamente la shell tutto fila liscio come l'olio, ma se sono costretto a premere il tasto invio, il processo recepisce quell'invio come un tasto premuto e fa cose che non dovrebbe fare...
mi spete spiegare perchè accade???
e soprattutto come impedire che accada??
Nel caso non fossi stato sufficientemente chiaro allego un esempio:
-Caso ERRATO:
Codice:
mercedes:~/privato/test> ./processo3.exe &
[4] 17443
mercedes:~/privato/test> avvio processo
caricamento in corso
caricamento eseguito correttamente
<---- qui rimango bloccato e se premo invio succede questo...
Codice:
[4] + Suspended (tty input) ./processo3.exe
mercedes:~/privato/test>
vedete?? ritorno si alla shell ma intanto il processo è 'suspended' e ha eseguito il codice
-Caso CORRETTO:
in questo caso invece mi ritorna direttamente la shell e tutto va come deve andare....
l'unica differenza che ho notato io è che nel primo caso dopo il lancio del processo viene restituito:
- il PID,
- poi la Shell,
- poi le frasi di debug e rimane in sospeso....
nel secondo caso viene restituito
- il PID,
- poi le frasi di debug
- poi la Shell,
grazie MILLE!!!