Shell Scripting,一段时间执行后的Killing流程

时间:2014-05-10 23:57:18

标签: linux shell process linux-kernel makefile

我正在编写一个makefile来执行C中的程序,计时执行一秒钟,然后使用PID终止进程。我复制粘贴了下面的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

下面我附上了我的搜索结果图片的链接:

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

由于某种原因,该进程在执行Makefile时不会被杀死,但是如果我再次手动运行kill命令,该进程将被终止。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

好吧,如果你真的提供了makefile,那么帮助你会容易得多:如果你没有向我们展示,我们怎么能告诉它有什么问题呢?

然而,我怀疑你忘了逃避美元符号;美元符号是特殊的,所以你必须在制作配方中使用它们时加倍:

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