簡單代碼:的sigaction SIGINT,在外殼PROGRAMM運行與&(背景)沒有得到信號
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <iostream>
using namespaces td;
bool unblock = false;
long int ile = 0;
void ouch(int sig) {
cout << "signal " << sig << endl;
unblock = true;
}
int main(){
struct sigaction act;
act.sa_handler = ouch;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
sigaction(SIGINT, &act, 0);
do {
cout << "." << endl;
} while(!unblock);
cout << "EXIT" << endl;
}
現在我編譯代碼和我得到的「的a.out」。 當我像這樣運行的a.out:
[[email protected] test]$ ./a,out
運行與預期,當我按CTRL + C就像需要 程序退出但是,當我像這樣運行程序(這是必要的我的項目):
[[email protected] test]$ ./a.out&
操作系統傳遞控制的殼,我無法用CTRL + C打破循環
我需要運行在bash腳本的代碼,我需要運行在背景中。在這種情況下能否以某種方式捕捉到信號?
請參閱'man kill'。 – BoBTFish