5

这是测试示例:

(1)。做无限循环的简单程序:

#include <iostream>
using namespace std;

int main() {
  int counter = 0;
  while (1) cout << ++counter << ": endless loop..." <<endl;
}

(2)。system()另一个通过命令启动上述示例的程序:

#include <iostream>
#include <windows.h>

using namespace std;

int main() {
  system("endless_loop.exe");
  cout << "back to main program" << endl;
}

Ctrl+Break此程序上执行时,文本back to main program不显示。如何将此组合键限制在进程内部并将执行指针返回到主应用程序?

另一件事是我并不总是能够控制内部程序的源代码,所以我不能在那里改变东西。

4

1 回答 1

3

添加这个::

#include <signal.h>

 ...

signal (SIGINT, SIG_IGN);

调用后signal(),程序忽略 Ctrl-Break。fork()在 Linux 上,忽略信号通过/传播到子进程exec()

exec()由于 O/S + 运行时库的工作方式,我希望 Windows 重置默认信号处理。因此,如果您希望孩子忽略Break,请将上面的代码也添加到其中。

于 2012-06-04T06:40:42.907 回答