Как передать SIGALRM программе, которая заканчивает выполнение в миллисекундах?

У меня есть программа C, которая вычисляет первые n простые числа, если n передается как аргумент.

$ ./prime 5
2
3
5
7
11

Логика программы позволяет мне вводить в желаемую функцию, если я могу дать SIGALRM к процессу программы.

Так в основном я должен войти

kill -14 <PID of prime>

в другом терминале, когда 'главный' только начинает выполняться, прежде, чем вводить цикл для нахождения простых чисел. Нужно также отметить, что PID изменяется каждый раз, когда программа выполнена.

Как я могу связать все эти действия и выполнить это в однострочной команде?

0
задан 14 October 2016 в 02:16

2 ответа

Создайте короткий сценарий оболочки:

#!/bin/sh
./prime 5 &
sleep 0.001
kill -14 $!

можно экспериментировать в корректировке значения направо от сна, управляют или избавляются от него в целом.

Также примечание, что особенно в занятой многопользовательской системе у Вас нет способа гарантировать, что процесс на самом деле получит сигнал.

Редактирование : одолженный $! идея из ответа murus

2
ответ дан 28 September 2019 в 10:11

PID последнего фонового процесса может быть получен с помощью специальной переменной $!. Так:

./prime 5 & kill -ALARM $!
1
ответ дан 28 September 2019 в 10:11

Другие вопросы по тегам:

Похожие вопросы: