У меня есть дочерний процесс, который работает в псевдотерминале. Родительский процесс не запускается с правами root, но дочерний процесс выполняется через su или sudo. Из-за этого невозможно отправить сигнал дочернему процессу, чтобы заставить его выйти. Я хочу заставить его выйти одним из следующих способов:Как отправить управляющий символ Ctrl-C или сообщение о зависании терминала дочернему процессу?
- эмулировать Ctrl-C.
- Эмуляция терминала зависания.
Как мне это сделать? У меня уже есть мастер псевдотерминал FD, и я пытался что-то вроде этого:
write(master, &termios.c_cc[VINTR], 1)
, но ничего не делает.
Я не знаю, будет ли это работать с вашей программой/pty, но что я делаю с тех пор, как я запускаю bash, а bash берет^C как SIGINT по умолчанию [я думаю?] Делает char, который содержит hex code: (0x03 для^C), а затем записать его в мой pty с помощью: write (m_nMaster, & ctrlC, sizeof (ctrlC)); – 2010-02-08 17:24:28