Forráskód Böngészése

Shell: Show termination signal if job did not exit cleanly

AnotherTest 4 éve
szülő
commit
59b46a1f51
2 módosított fájl, 6 hozzáadás és 1 törlés
  1. 3 0
      Shell/Job.h
  2. 3 1
      Shell/Shell.cpp

+ 3 - 0
Shell/Job.h

@@ -84,6 +84,7 @@ public:
     void disown() { m_should_be_disowned = true; }
     bool is_running_in_background() const { return m_running_in_background; }
     bool should_announce_exit() const { return m_should_announce_exit; }
+    bool should_announce_signal() const { return m_should_announce_signal; }
     bool is_suspended() const { return m_is_suspended; }
     void unblock() const;
 
@@ -100,6 +101,7 @@ public:
     }
 
     void set_should_announce_exit(bool value) { m_should_announce_exit = value; }
+    void set_should_announce_signal(bool value) { m_should_announce_signal = value; }
 
     void deactivate() const { m_active = false; }
 
@@ -121,6 +123,7 @@ private:
     bool m_exited { false };
     bool m_running_in_background { false };
     bool m_should_announce_exit { false };
+    bool m_should_announce_signal { true };
     int m_exit_code { -1 };
     int m_term_sig { -1 };
     Core::ElapsedTimer m_command_timer;

+ 3 - 1
Shell/Shell.cpp

@@ -853,7 +853,9 @@ RefPtr<Job> Shell::run_command(const AST::Command& command)
         if (!job->exited())
             return;
         if (job->is_running_in_background() && job->should_announce_exit())
-            fprintf(stderr, "Shell: Job %" PRIu64 "(%s) exited\n", job->job_id(), job->cmd().characters());
+            warnln("Shell: Job {} ({}) exited\n", job->job_id(), job->cmd().characters());
+        else if (job->signaled() && job->should_announce_signal())
+            warnln("Shell: Job {} ({}) {}\n", job->job_id(), job->cmd().characters(), strsignal(job->termination_signal()));
 
         last_return_code = job->exit_code();
         job->disown();