Это на Perl, но вы должны быть в состоянии перевести его на Python.
#!/usr/bin/perl
use strict;
use warnings;
#set times to 0 for infinite times
my ($times, $wait, $program, @args) = @ARGV;
$times = -1 unless $times;
while ($times--) {
$times = -1 if $times < 0; #catch -2 and turn it back into -1
die "could not fork" unless defined(my $pid = fork);
#replace child with the program we want to launch
unless ($pid) {
exec $program, @args;
}
#parent waits and kills the child if it isn't done yet
sleep $wait;
kill $pid;
waitpid $pid, 0; #clean up child
}
Поскольку я пытаюсь научить себя Python, вот он на Python (я не доверяю этому коду):
#!/usr/bin/python
import os
import sys
import time
times = int(sys.argv[1])
wait = int(sys.argv[2])
program = sys.argv[3]
args = []
if len(sys.argv) >= 4:
args = sys.argv[3:]
if times == 0:
times = -1
while times:
times = times - 1
if times < 0:
times = -1
pid = os.fork()
if not pid:
os.execvp(program, args)
time.sleep(wait)
os.kill(pid, 15)
os.waitpid(pid, 0)