ninja-build/ninja

Signal handling does not work as expected

Open

#1,241 建立於 2017年2月16日

在 GitHub 查看
 (2 留言) (0 反應) (0 負責人)C++ (1,544 fork)batch import
help wanted

倉庫指標

Star
 (10,194 star)
PR 合併指標
 (平均合併 39天 3小時) (30 天內合併 10 個 PR)

描述

Ninja on POSIX systems currently puts children in their own process group. This policy causes a variety of problems, since ninja doesn't perfectly forward signals to children --- for example, C-z in the terminal sends a SIGTSTP (and then SIGSTOP) to ninja, but since ninja doesn't do anything special for SIGTSTP, the compilation jobs keep running. SIGINT frequently doesn't interrupt compilation jobs either.

In GNU Make, all of these interactions work as you'd expect.

Why do we need to put subprocesses in their own process group? This whole issue disappears if we don't put children in their own process groups, let them inherit the controlling terminal, and allow signal propagation to work normally.

貢獻者指南