Shell脚本,在一个时间执行周期后杀死进程



我正在写一个makefile来用C语言执行一个程序,计时执行一秒钟,并使用PID终止进程。我复制粘贴我的Makefile如下:

Makefile:

构建:

gcc -o parse.out bst.c parse.c
gcc -o tree.out bst.c tree-search.c

1:

./parse.out < gettysburg.txt > myOutput/test1.result
diff actual/test1.result myOutput/test1.result

2:

./parse.out < king-speech.txt > myOutput/test2.result
diff actual/test2.result myOutput/test2.result
3:

./tree.out < testFile1 > myOutput/test3.result &
sleep 1
kill -9  $(ps aux | grep './tree.out' | head -n1 | awk '{print $2}')
diff actual/test3.result myOutput/test3.result
4:

./tree.out < testFile2 > myOutput/test4.result &
sleep 0.5
kill -9 $(ps aux | grep './tree.out' | head -n1 | awk '{print $2}')
diff actual/test4.result myOutput/test4.result
清洁:

rm -f *.o

下面我附加了一个链接到我的结果的图像:

https://i.stack.imgur.com/07v7O.jpg

由于某种原因,进程在执行Makefile时没有被杀死,但是如果我再次手动运行kill命令,进程就会被杀死。有人知道怎么解决这个问题吗?

好吧,如果你真的提供了makefile,帮助你会容易得多:如果你不给我们看,我们怎么能知道它有什么问题呢?

然而,我怀疑你忘记转义美元符号;美元符号是特别制作的,所以当你在制作配方中使用它们时,你必须将它们加倍:

kill -9 $$(ps aux | grep './tree.out' | head -n1 | awk '{print $$2}')

最新更新