#include <poll.h>
#include <stdio.h>
#include <unistd.h>
int main() {
struct pollfd fds[1];
int ret;
// 初始化pollfd结构体
fds[0].fd = 0; // 标准输入文件描述符
fds[0].events = POLLIN; // 监听可读事件
printf("Waiting for input...\n");
// 调用poll函数,等待事件发生
ret = poll(fds, 1, -1); // -1表示无限期等待
if (ret == -1) {
perror("poll"); // 如果出错,打印错误信息
return 1;
}
if (ret > 0) {
if (fds[0].revents & POLLIN) {
char buf[1024];
int nread = read(fds[0].fd, buf, sizeof(buf) - 1);
if (nread > 0) {
buf[nread] = '\0';
printf("Read: %s", buf);
}
}
}
return 0;
}
包含头文件:
#include <poll.h>:包含poll相关的定义。#include <stdio.h> 和 #include <unistd.h>:用于标准输入输出和系统调用。初始化pollfd结构体:
struct pollfd fds[1];:定义一个pollfd数组,用于存储要监听的文件描述符。fds[0].fd = 0;:设置文件描述符为标准输入(通常是键盘输入)。fds[0].events = POLLIN;:设置监听事件为可读事件。调用poll函数:
poll(fds, 1, -1);:调用poll函数,监听fds数组中的文件描述符。参数1表示数组长度,-1表示无限期等待。处理返回值:
poll返回值为-1,表示出错,使用perror打印错误信息。0,表示有事件发生。检查revents字段是否包含POLLIN事件,如果有则读取数据并打印。读取数据:
read函数从标准输入读取数据,并打印出来。这个示例展示了如何使用poll函数来监听标准输入的可读事件,并在有输入时进行处理。
上一篇:linux for循环
下一篇:linux日志查找关键字
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站