Я не уверен, как использовать tcsetpgrp () int tcsetpgrp(int fildes, pid_t pgid_id);
, я хочу установить pid группы переднего плана, чтобы он стал новым групповым pid ребенка, чтобы при вводе control-C он только убивал мой дочерний процесс в моем терминал, а не фоновый терминал. (Я думаю, в настоящее время pid родительской группы совпадает с gpid переднего плана оболочки)
// we are in the child process
// check the foreground process group id.
pid_t fore_pgid = tcgetpgrp(0);
printf("the foregroud pgid is: %d \n", fore_pgid);
// change the foreground process group id to the redefined child process's group pid.
tcsetpgrp(0, child_gpid);
fore_pgid = tcgetpgrp(0);
printf("the foregroud pgid is: %d \n", fore_pgid);
результат: программа просто застряла на этой tcsetpgrp(0, child_gpid);
строке
потому что после этого он не распечатывал некоторые строки.
обратите внимание, что выше только моя мысль, это может быть не правильно; Я не знаю, как убить только мой дочерний процесс, но не фоновую оболочку. Если вы знаете, как это сделать, пожалуйста, помогите мне.
Заранее большое спасибо!