C信号与事件处理程序

时间:2014-03-18 14:54:18

标签: c events signals

我最近对C编程很感兴趣。我喜欢你只有一组'最小'的函数和数据类型(C标准库),你仍然可以用它创建几乎所有东西。

但现在问我的问题: 你如何在C中进行简单的事件处理?我已经阅读了有关signals.h标题的内容,这将是我正在寻找的...如果有专门为用户保留的信号。但我永远无法确定环境意外地提出了我可以使用C标准库的信号之一。 好的...... linux / unix中有扩展信号头,有2个(?)信号给用户......但是我可以想象你需要更多的情况...... 此外,我想学习独立编写C平台。我通过听套接字听说过“模拟信号”......但这也不是平台独立的。

有没有办法编写一个C程序,只有在标准C库的帮助下才能处理事件而不依赖平台?

感谢您的任何提示;

2 个答案:

答案 0 :(得分:1)

Yeap,这正是Unix设计的用户信号。据说这一切都取决于你使用什么信号。如果您只是异步中继某些事件,请使用套接字。查找事件循环。你甚至可以创造无限的复杂性。由于操作系统特定原因,信号是一组非常特殊的功能,例如有人试图杀死你。在这方面,应该限制选项,以减少OS操作的开销。

我的建议是远离信号,除非你非常清楚地知道你使用它的是什么。虽然来自许多不同的地方,但信号用于操作系统与您通信,而不是您与自己通信。并且只有操作系统想要给您打电话的明确原因。因此,我倾向于认为最初的2个用户定义信号绰绰有余。

答案 1 :(得分:0)

不幸的是,我认为你将在这里遇到平台依赖。您可以编写多线程应用程序,其中一个线程等待某些输入,然后在该输入到达时发送消息/进行调用(例如在控制台上等待输入字符串)。但这并没有融入C99,你必须依赖平台相关的第三方库。这是关于该主题的有用帖子。我知道这不是你想要的答案,但我希望它有所帮助。

C: Multithreading

编辑:C11原生支持多线程,请参阅 http://en.cppreference.com/w/c/header

我还没有使用它。