当前位置: 首页 > news >正文

编写一个名为 tfgets 的 fgets 函数版本

编写一个名为 tfgets 的 fgets 函数版本,该函数在 5 秒后超时。tfgets 函数接受与 fgets 相同的输入参数。如果用户在 5 秒内未输入一行内容,tfgets 将返回 NULL。否则,它返回指向输入行的指针。

#include "csapp.h"static sigjmp_buf env;static void handler(int sig)
{Alarm(0);siglongjmp(env, 1);
}char *tfgets(char *s, int size, FILE *stream)
{Signal(SIGALRM, handler);Alarm(5);if (sigsetjmp(env, 1) == 0)return Fgets(s, size, stream); /* return user input */elsereturn NULL; /* return NULL if fgets times out */
}
int main()
{char buf[MAXLINE];while (1) {bzero(buf, MAXLINE);if (tfgets(buf, sizeof(buf), stdin) != NULL)printf("read: %s", buf);elseprintf("timed out\n");}exit(0);
}

http://www.xdnf.cn/news/1410085.html

相关文章:

  • FPGA入门指南:从零开始的可编程逻辑世界探索
  • deep seek的对话记录如何导出
  • 【大数据技术实战】流式计算 Flink~生产错误实战解析
  • Springcloud-----Nacos
  • 【Spring Cloud微服务】7.拆解分布式事务与CAP理论:从理论到实践,打造数据一致性堡垒
  • Java试题-选择题(25)
  • 【Java进阶】Java与SpringBoot线程池深度优化指南
  • 【计算机组成原理·信息】2数据②
  • SpringAI应用开发面试全流程:核心技术、工程架构与业务场景深度解析
  • 第2.5节:中文大模型(文心一言、通义千问、讯飞星火)
  • 【系统分析师】高分论文:论网络系统的安全设计
  • 【51单片机】【protues仿真】基于51单片机音乐喷泉系统
  • Mysql什么时候建临时表
  • MySQL直接启动命令mysqld详解:从参数说明到故障排查
  • 策略模式:灵活应对算法动态切换
  • 探索数据结构中的 “树”:揭开层次关系的奥秘
  • 3【鸿蒙/OpenHarmony/NDK】如何在鸿蒙应用中使用NDK?
  • Makefile语句解析:头文件目录自动发现与包含标志生成
  • 【读论文】自监督消除高光谱成像中的非独立噪声
  • AI 取代部分岗位后:哪些职业更易被替代?人类该如何提升 “不可替代性”?
  • 硬件-电感学习DAY6——电感磁芯损耗全解析
  • 多人协作开发指南二
  • GPU-Driven Rendering inAssassin’s Creed Mirage
  • Android开发简介
  • LangChain框架深度解析:定位、架构、设计逻辑与优化方向
  • 计算机视觉与深度学习 | 双目立体特征提取与匹配算法综述——理论基础、OpenCV实践与MATLAB实现指南
  • leetcode_240 搜索二维矩阵 II
  • leetcode-hot-100(堆)
  • 分享一个实用的B站工具箱(支持音视频下载等功能)
  • Conda相关的用法