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

linux select

作者:√学卟会掩饰   发布日期:2026-01-22   浏览:107

#include <stdio.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

int main() {
    fd_set readfds;
    struct timeval timeout;

    // 初始化文件描述符集合
    FD_ZERO(&readfds);
    FD_SET(0, &readfds);  // 将标准输入(文件描述符0)加入集合

    // 设置超时时间
    timeout.tv_sec = 5;   // 5秒
    timeout.tv_usec = 0;

    printf("等待输入...\n");

    // 调用select函数,监视文件描述符集合中的文件描述符是否可读
    int ret = select(1, &readfds, NULL, NULL, &timeout);

    if (ret == -1) {
        perror("select error");
        return 1;
    } else if (ret == 0) {
        printf("超时,没有输入\n");
    } else {
        if (FD_ISSET(0, &readfds)) {
            char buffer[1024];
            int n = read(0, buffer, sizeof(buffer));
            if (n > 0) {
                buffer[n] = '\0';
                printf("读取到输入: %s\n", buffer);
            }
        }
    }

    return 0;
}

解释说明:

  • fd_set:用于存储文件描述符的集合。
  • FD_ZERO(&readfds):初始化文件描述符集合,清空所有位。
  • FD_SET(0, &readfds):将标准输入(文件描述符0)加入集合中。
  • struct timeval timeout:设置超时时间,这里设置为5秒。
  • select():监视文件描述符集合中的文件描述符是否可读。第一个参数是最大文件描述符加1,后面四个参数分别是读、写、异常文件描述符集合和超时时间。
  • FD_ISSET(0, &readfds):检查文件描述符0是否在集合中,即是否有数据可读。

这个程序会等待用户输入,如果5秒内有输入,则读取并打印输入内容;否则超时并输出提示信息。

上一篇:linux修改host文件

下一篇:linux cp 文件夹

大家都在看

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

linux 发送邮件

linux长ping命令

linux groupadd

linux关机命令行

linux 安装 gcc

linux重启oracle命令

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

linux查看系统运行时间

linux搭建sftp

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

Laravel 中文站