У меня есть программа C, которая вычисляет первые n простые числа, если n передается как аргумент.
$ ./prime 5
2
3
5
7
11
Логика программы позволяет мне вводить в желаемую функцию, если я могу дать SIGALRM
к процессу программы.
Так в основном я должен войти
kill -14 <PID of prime>
в другом терминале, когда 'главный' только начинает выполняться, прежде, чем вводить цикл для нахождения простых чисел. Нужно также отметить, что PID изменяется каждый раз, когда программа выполнена.
Как я могу связать все эти действия и выполнить это в однострочной команде?
Создайте короткий сценарий оболочки:
#!/bin/sh
./prime 5 &
sleep 0.001
kill -14 $!
можно экспериментировать в корректировке значения направо от сна, управляют или избавляются от него в целом.
Также примечание, что особенно в занятой многопользовательской системе у Вас нет способа гарантировать, что процесс на самом деле получит сигнал.
Редактирование : одолженный $!
идея из ответа murus
PID последнего фонового процесса может быть получен с помощью специальной переменной $!
. Так:
./prime 5 & kill -ALARM $!