Я написал программу, которая вызывает системную команду изнутри:Как включить ctrl-c/ctrl + break после вызова системы?
#include <stdlib.h>
int main(void)
{
while(1)
{
system("ls 2>&1 1>/dev/null"); // comment this line out to enable ctrl+break
}
return 0;
}
Однако, когда он работает, CTRL + C и CTRL + нарушит больше не работает и, как представляется, игнорируются.
Я пытаюсь написать программу, которая выполняет некоторые операции в фоновом режиме с использованием оболочки, но я также хочу, чтобы вырваться из программы, когда пользователь хочет сломать.
Есть ли способ заставить его работать так, как я хочу? Должен ли я изменить архитектуру для выполнения какого-то вида fork/exec?
В коде, который вы опубликовали выше, вполне вероятно, что цикл вращается так сильно, что никогда не будет возможности обработать сигнал. Это ваш настоящий код? –
Вы рассматривали сценарий bash/shell как решение? – zengr
@zengr: Я взаимодействую с несколькими библиотеками, поэтому bash не будет работать. – Martin