Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

linux poll

作者:殘沫灕汐   发布日期:2026-03-06   浏览:32

#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;
}

解释说明:

  1. 包含头文件

    • #include <poll.h>:包含poll相关的定义。
    • #include <stdio.h>#include <unistd.h>:用于标准输入输出和系统调用。
  2. 初始化pollfd结构体

    • struct pollfd fds[1];:定义一个pollfd数组,用于存储要监听的文件描述符。
    • fds[0].fd = 0;:设置文件描述符为标准输入(通常是键盘输入)。
    • fds[0].events = POLLIN;:设置监听事件为可读事件。
  3. 调用poll函数

    • poll(fds, 1, -1);:调用poll函数,监听fds数组中的文件描述符。参数1表示数组长度,-1表示无限期等待。
  4. 处理返回值

    • 如果poll返回值为-1,表示出错,使用perror打印错误信息。
    • 如果返回值大于0,表示有事件发生。检查revents字段是否包含POLLIN事件,如果有则读取数据并打印。
  5. 读取数据

    • 使用read函数从标准输入读取数据,并打印出来。

这个示例展示了如何使用poll函数来监听标准输入的可读事件,并在有输入时进行处理。

上一篇:linux for循环

下一篇:linux日志查找关键字

大家都在看

linux常用命令查询端口是否正常

linux 发送邮件

linux长ping命令

linux groupadd

linux关机命令行

linux 安装 gcc

linux重启oracle命令

linux把一个文件夹移动到另一个文件夹里

linux查看系统运行时间

linux搭建sftp

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站