Итак, я пишу простую оболочку.Соответствующие коды размещены ниже.
void sig_int_handler(int signum) {
if (pid == -1) // do nothing
else kill(...);
}
signal(SIGINT, sig_int_handler);
..
while(1) {
pid = -1;
printf(COMMAND_PROMPT);
input_len = read(...);
if only enter is pressed: continue;
// parse inputs
pid = fork();
if (pid == 0) { // Do child process operations }
else if (pid > 0) { // Parent waits for child }
else {..}
}
Но теперь, когда я нажимаю Ctrl + C, он правильно выходит из дочернего процесса.Однако, если я нажимаю ctrl + c на обычном терминале, он выводит "ctrl + c" на стандартный вывод, но тогда он ничего не делает.Как заставить перевод строки в чтение, чтобы он выдал мне еще один запрос?