我正在编写一个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命令,该进程将被终止。有谁知道如何解决这个问题?
答案 0 :(得分:0)
好吧,如果你真的提供了makefile,那么帮助你会容易得多:如果你没有向我们展示,我们怎么能告诉它有什么问题呢?
然而,我怀疑你忘了逃避美元符号;美元符号是特殊的,所以你必须在制作配方中使用它们时加倍:
kill -9 $$(ps aux | grep './tree.out' | head -n1 | awk '{print $$2}')