Вообще мне не представляется возможным как-то оперировать с stdin. На сколько я понимаю, устройство консольного stdin таково, что в него попадают не нажимаемые клавиши, а введеный текст. Т.е., чтобы в поток попали символы, консоль должна быть переведена в режим ввода. Пока консоль не в режиме ввода, никакие нажатия клавишь не влияют никаким образом на stdin. А в режиме ввода - как ни крути, а закончить ввод может только пользователь.
в скрипте проверяешь значение переменной откружения. если он имеет некоторое значение - прерываешься и считываешь вход. во второй консоли, собственно, когда нужно прервать скрипт задаешь нужное значение переменной откружения. я это имеел ввиду.
Для проверки наличия данных с терминального девайса использовался "ioctl". def, я не пойму как вы предлагаете изменить переменную в окружении совершенно другого процесса? Окружение у каждого процесса свое! максимум на что можно расчитывать - так это общее окружение с предком если родитель сам решит его разделять. Но на это крайне неудобно закладываться... Raa, задача легко решается если вместо переменной окружения предложенной def'ом использовать файл (создавать и удалять его симулируя эдакий флаг). Кроме того можно использовать "pcntl", в таком случае можно использовать fork и создать обработчик для приема различных сигналов типа SIGTERM...