Uruchamiając zadanie w tle, a następne wpisując 'fg', atrybuty terminala zostają poprzestawiane w zły sposób na czas działania zadania.
Przykłady:
i) 'wc -c' zaraz po wznowieniu wypisuje 0 i się kończy (czyli dostał EOF):
wc -c &
fg
ii) Możemy skompilować
#include <stdio.h>
int main()
{
for(int i=0;i<10;i++)
printf("%d",getchar());
return 0;
}
i zobaczyć, że rzeczywiście, gdy zrobimy
./a.out &
fg
to widzimy, że program za każdą próbą odczytu ze standardowego wejścia dostanie EOF.
iii) Gdy w naszym shellu uruchomimy kolejnego ./shell, to uruchomiony ./shell wykonuje polecenia, ale terminal nie wyświetla wpisywanych przez nas znaków oraz "dziwnie" formatuje białe znaki na wyjściu:
./shell &
fg
ls
Zgaduję, że uruchamiając zadanie w tle, nigdy nie nadpisujemy jego tmodes, a po wpisaniu 'fg' wykonujemy Tcsetattr(), zerując wszystkie atrybuty terminala.