在system()执行[C++]时取消CTRL+C



当前正在执行system((时,如何使CTRL+C不执行任何操作。

这是我的代码:

#include <iostream>
#include <functional>
#include <signal.h>
void noCTRLCCancel(int sig) {
signal(SIGINT, noCTRLCCancel);
std::cout << "CTRL+C pressed, not shutting down." << std::endl;
}
inline void command() {
system("some command"); // When CTRL+C is pressed, it cancels the command, but how to cancel CTRL+C and do nothing?
}
int main(int argc, char **argv) {
signal(SIGINT, noCTRLCCancel);
command();
}

您可以使用SIG_IGN忽略特定信号,并使用SIG_DFL将其设置回默认值。

void command() {
std::signal(SIGINT, SIG_IGN);
system("some command");
std::signal(SIGINT, SIG_DFL);
}

https://en.cppreference.com/w/cpp/utility/program/signal

最新更新