我正在写一个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}')