“重写 'fgets' 以包含警报,这样如果 5 秒后用户没有输入任何数据,'fgets' 将返回指向 NULL 的指针(超时)”
这是一项大型家庭作业的问题,我们才刚刚开始研究信号、捕捉、处理等。话虽如此,这本书和讲座幻灯片都缺乏这方面的内容......
我想到了创建一个处理程序来捕获这种类型的异常,并且我了解警报的工作原理,但我不了解接口将如何工作。
现在只想着“fgets”......如果我只是在所有其他工作完成之前(就在我的返回指针之前)放一个警报:
char *fgets(//...//)
{
alarm(5);
char * to_return = NULL;
//...//
如果警报在用户输入数据之前响起,我的处理程序可以“返回 NULL”吗?处理程序完成后,执行是否会在“fgets”中恢复?我想我对处理程序在函数内部可以做什么感到困惑(即它可以强制函数返回一些值,它可以修改函数中声明的变量,它可以强制跳转到不同的函数调用吗? ETC。)