Обычно для выполнения команд из tty необходимы программы getty, login и shell.
Но вы также можете поместить оболочку, непосредственно выполняющую команды от псевдо-терминала.
Это упрощенный пример (все проверки ошибок удалены):
int main( int argc, char** argv )
{
int master_fd = create_my_own_psudo_terminal() ;
// Wait until someone open the tty
fd_set fd_rset;
FD_ZERO( &fd_rset );
FD_SET( master_fd, &fd_rset );
select( master_fd + 1, &fd_rset, NULL, NULL, NULL );
dup2( master_fd, STDIN_FILENO );
execl("/bin/sh", "sh", 0 );
return 0;
}
Теперь вы можете сделать следующее:
Запустите эту простую программу на первом терминале.
И отправьте свою команду со второго терминала:
echo "ls" > /dev/pts/5
И вы получите листинг в первом терминале.
Примечание. Это совершенно небезопасно, поскольку вход в систему не выполнен.