app: attempt SIGTERM for stop

Change-Id: I04778488eb2c58ef560a4243ac91bbf5022cf530
diff --git a/minindn/apps/application.py b/minindn/apps/application.py
index aca153d..877a58b 100644
--- a/minindn/apps/application.py
+++ b/minindn/apps/application.py
@@ -21,10 +21,13 @@
 # along with Mini-NDN, e.g., in COPYING.md file.
 # If not, see <http://www.gnu.org/licenses/>.
 
+import subprocess
 from minindn.util import getPopen
 from typing import Union, Optional
 
 class Application(object):
+    process: subprocess.Popen
+
     def __init__(self, node):
         self.node = node
         self.process = None
@@ -48,7 +51,11 @@
 
     def stop(self):
         if self.process is not None:
-            self.process.kill()
+            try:
+                self.process.terminate()
+                self.process.wait(timeout=5)
+            except subprocess.TimeoutExpired:
+                self.process.kill()
             self.process = None
         if self.logfile is not None:
             self.logfile.close()