我有一个 C 程序,如果 n 作为参数传递,它会计算前 n 个素数。
$ ./prime 5
2
3
5
7
11
SIGALRM
如果我可以给予程序进程,程序的逻辑就可以让我进入所需的功能。
所以基本上我必须输入
kill -14 <PID of prime>
在另一个终端中,当“prime”刚开始执行时,在进入循环查找素数之前。还要注意的是,每次执行程序时,PID 都会发生变化。
我如何将所有这些操作连接起来并在单行命令中执行?
答案1
创建一个简短的 shell 脚本:
#!/bin/sh
./prime 5 &
sleep 0.001
kill -14 $!
您可以尝试调整睡眠命令右侧的值,或者完全删除它。
还要注意,特别是在繁忙的多用户系统中,您无法保证该进程确实会收到信号。
编辑:借用了$!
murus 答案的想法
答案2
可以使用特殊变量获取最后一个后台进程的 PID $!
。因此:
./prime 5 & kill -ALARM $!