Bash

Ctrl-C 和 kill -INT 的區別?

  • January 10, 2020

我在 C++ 程序中有一個信號處理程序:

void term(int signum)
{
   cout << "in term" << endl;
   # Do Stuff
   exit(0);
}

int main(int argc, char *argv[])
{
   # Do Stuff
   signal(SIGINT, term);
   # Do Stuff
}

該程序執行良好。Ctrl+C當我按下並退出時進入函式項。

但是,當我嘗試使用腳本複制該行為時,它不起作用。

我正在執行的腳本的簡化版本:

! /bin/bash
sudo ./program &
rpid=$!

sleep 2
sudo kill -INT $rpid
# sudo kill -TERM $rpid
# sudo kill $rpid

echo "killed"
wait $rpid

在我按下 之前,該程序甚至不會進入術語功能Ctrl+C。它無限期地等待。

% sudo sh -c 'exec echo 我的程序 ID 是 $$。' & echo "Xyr 程序 ID 是 $\!." ; 等待
[1] 59130
Xyr 程序 ID 為 59130。
我的程序 ID 是 59131。
[1] + done sudo sh -c 'exec echo 我的程序 ID 是 $$。'
%

歡迎來到可插拔認證模組的世界!loginsu和之類的程序sudo不再與目標程序重疊。

您將信號發送到錯誤的程序。

進一步閱讀

引用自:https://unix.stackexchange.com/questions/561448