diff --git a/7seg.cpp b/7seg.cpp
index 2efc25c..daa71f9 100644
--- a/7seg.cpp
+++ b/7seg.cpp
@@ -20,17 +20,14 @@
 #include <lpcsnoop/snoop_listen.hpp>
 #include <string>
 
-static const char* device_node_path;
-
 namespace fs = std::filesystem;
 
-static void DisplayDbusValue(postcode_t postcodes)
+static void DisplayDbusValue(FILE* f, postcode_t postcodes)
 {
     auto postcode = std::get<primary_post_code_t>(postcodes);
     // Uses cstdio instead of streams because the device file has
     // very strict requirements about the data format and streaming
     // abstractions tend to muck it up.
-    FILE* f = std::fopen(device_node_path, "r+");
     if (f)
     {
         int rc = std::fprintf(f, "%d%02x\n", (postcode > 0xff),
@@ -40,7 +37,6 @@
             std::fprintf(stderr, "failed to write 7seg value: rc=%d\n", rc);
         }
         std::fflush(f);
-        std::fclose(f);
     }
 }
 
@@ -58,17 +54,26 @@
         return -1;
     }
 
-    device_node_path = argv[1];
+    static bool sig_recv = false;
+    FILE* f = std::fopen(argv[1], "r+");
 
     auto ListenBus = sdbusplus::bus::new_default();
     std::unique_ptr<lpcsnoop::SnoopListen> snoop =
-        std::make_unique<lpcsnoop::SnoopListen>(ListenBus, DisplayDbusValue);
+        std::make_unique<lpcsnoop::SnoopListen>(ListenBus, DisplayDbusValue, f);
 
-    while (true)
+    signal(SIGINT, [](int signum) {
+        if (signum == SIGINT)
+        {
+            sig_recv = true:
+        }
+    });
+
+    while (!sig_recv)
     {
         ListenBus.process_discard();
         ListenBus.wait();
     }
 
+    std::fclose(f);
     return 0;
 }
