сигналы — C ++ SIGINT и SIGSTP через Ctrl + C и Ctrl + Z

Я пишу на оболочке и хочу реализовать сигналы SIGSTP а также SIGINT,
Когда пользователь запускает новый процесс и нажимает CTRL+С он должен отправить SIGINT процессу и когда CTRL+Z нажата процесс должен получить сигнал SIGSTP.

Вот мой код до сих пор:

string inputNew = input;
vector<char*> arguments;
size_t lastChar = 0;

for(int i = 0; i < input.size(); i++)
{
char& c = input[i];
if((c == ' ' || c == '\t'||c == '\n') && lastChar != i)
{
c = '\0';
arguments.push_back(&input[0] + lastChar);
lastChar = i+1;
}
}

bool checkIfBackground(string & input)
{
size_t lastChar = input.size() - 1;
if(input[lastChar] == '&')
{
return true;
}
return false;
}

if((pid = fork()) < 0) {
exit(1);
} else if(pid == 0) {
execvp(arguments[0], &arguments[0]);
exit(1);
} else if(checkIfBackground(inputNew) == false) {
int status;
pid_t pid_r;
if(waitpid(pid, &status, 0) < 0) {
cout << "PID not known!";
}
} else {
cout << "Prozess is waiting in the background." << endl;
}

Я понятия не имею, как реализовать сигналы SIGSTP и SIGINT внутри моего кода.

0

Решение

Увидеть sigaction(2) справочные страницы. Он объясняет, как настроить обработчик сигнала навесного оборудования.

Обратите внимание, что обработчик сигнала является асинхронным. Это имеет ряд последствий. Прочтите страницу руководства и проведите некоторое время в Google.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]