假设我有一个以root身份启动的状态机来运行一个且在给定的保留vt中只有一个程序。我使用的第一个电话是:
execl("/usr/bin/openvt", "/usr/bin/openvt", "-c 12", "-f", "-- su auser /home/auser/sbin/ascript.sh", (char *) 0);
找到所有子节点的PID(shell脚本,调用等)的唯一方法是搜索ps aux以获取在该vt(tty12)上生成的PID并杀死它们,因为只有fork保持openvt命令的PID在新的vt打开后几乎死掉了吗? 或者是否有一种灵活的方式将SIGINT发送到已知的vt(即/ dev / vcs12 dev / tty12)?
答案 0 :(得分:1)
ps的-t tty
选项可能就是你要找的......
kill -INT `ps -t vcs12 -o pid=`
或者,以特定于sh / bash的方式:
kill -INT $(ps -t vcs12 -o pid=)