Я пытаюсь создать свою собственную оболочку linux. У меня исправлена команда bg, которая работает с этим кодом:Выполнение задания в оболочку переднего плана c
if (strcmp(worte[0], "bg")==0){
pid_t pidnumber;
pidnumber=atoi(worte[1]);
printf("PID: %d", pidnumber);
kill(pidnumber, SIGCONT);
return 0;
}
Однако команда fg работает некорректно. Когда я набираю «fg 12345» (12345 - это идентификатор процесса), он переносит этот процесс на передний план, но я не могу остановить его с помощью Ctrl-Z, также я не могу использовать Ctrl-C. Мой код следующие
if (strcmp(worte[0], "fg")==0){
pid_t pidnumber;
pidnumber=atoi(worte[1]);
tcsetpgrp(0, getpgid(pidnumber));
waitpid(getpgid(pidnumber), NULL, WUNTRACED);
tcsetpgrp(0, getpgid(shellpid));
return 0;
}
В коде Worte [0] обозначает FG и Worte 1 относится идентификатор процесса (например: 12345). Как я могу решить свою проблему, спасибо за помощь. Please look at the image to see my problem obviously