【发布时间】:2010-09-07 22:23:54
【问题描述】:
我试图让我的程序在 unix 中忽略 Ctrl+C 这似乎有效,问题是它一直在写“语法错误”。这是代码
extern "C" void ignore( int sig )
{
fprintf( stderr, "\n"); // Print a new line
// This function does nothing except ignore ctrl-c
}
int main()
{
// For ctrl-c
sigset( SIGINT, ignore );
while (1) {
getUserInput();
}
return 0;
}
每次我点击 Ctrl+C 时,它都会再次运行 getUserInput,这是预期的行为,但它也会写入“语法错误”。我检查并执行了“忽略”功能,一旦执行,它就会打印错误消息,我不知道为什么。
请问大家有什么线索吗?
非常感谢,
杰瑞
【问题讨论】:
-
如果这是 C,为什么是
extern "C"? -
请发布一个完整的、独立的、可以编译的程序。我在这里至少看到两件事可能是你的问题,但如果没有完整的测试用例,我无法确定。
-
如果这是新代码,你可能想使用
sigaction;sigset是 pre-POSIX 并且已弃用 -
谢谢迈克尔,很遗憾这段代码将在一台旧的 Solaris 机器上运行,所以我必须使用 sigset。