Luca Brasi, у вас каждый раз новые вводные....

По идее метод работы с потоками открытого приложения который показал .ubuntufan - может быть расширен. Просто откройте еще p.stdin.fileno() как поток на запись. Тогда после запуска можно читать из выходного потока пока не получите приглашение ввода пароля и передать его во входной поток приложения.
Но мне кажется, что это как-то неправильно. Наверное есть какие-то другие способы поднятия приоритета процесса/ смены владельца. Надо посмотреть, что там в стандартных библиотеках есть на эту тему - сам я с такой задачей не сталкивался и ничего определенного сказать не могу.
По поводу потоков - они не панацея и реально помогают порой в довольно узкой категории задач. В том же моем примере, наиболее длительным процессом является получение ответа от сервера. И именно за счет отправки на сервер одновременно 30-40 асинхронных запросов появляется возможность в десятки раз сократить время решения задачи.
А кроме того там ведь у меня 12-14 потоков пробовали байты из заранее подготовленных и не пересекающихся множеств и первый из процессов, который находил соответствие, формировал сигнал после которого остальные процессы завершались не заканчивая проверку своего набора. Тем самым еще и количество запросов сокращается по сравнению с чисто последовательным выполнением.
Если вам интересно - могу прислать вам код этого домашнего задания (хотя наверное к нему придется дать кучу пояснений, несмотря на множество комментариев по тексту). Просто мне показалось это наверное самая идеальная задача для демонстрации многопоточности.