не знаю, как использовать tcsetpgrp () - PullRequest
0 голосов
/ 09 июля 2019

Я не уверен, как использовать 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); строке потому что после этого он не распечатывал некоторые строки.

обратите внимание, что выше только моя мысль, это может быть не правильно; Я не знаю, как убить только мой дочерний процесс, но не фоновую оболочку. Если вы знаете, как это сделать, пожалуйста, помогите мне. Заранее большое спасибо!

1 Ответ

0 голосов
/ 11 июля 2019

Я не уверен, что понимаю, что вы пытаетесь сделать.

Вот пример от IBM того, что они сделали

IBM Пример tcsetpgrp ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...