zoukankan      html  css  js  c++  java
  • 非阻塞的c/s,epoll服务器模型

    epoll

    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/epoll.h>
    #include <errno.h>
    #include <unistd.h>
    
    #define MAXLINE 10
    
    int main(int argc, char *argv[])
    {
        int efd, i;
        int pfd[2];
        pid_t pid;
        char buf[MAXLINE], ch = 'a';
    
        pipe(pfd);
        pid = fork();
    
        if (pid == 0) {
            close(pfd[0]);
            while (1) {
                for (i = 0; i < MAXLINE/2; i++)
                    buf[i] = ch;
                buf[i-1] = '
    ';
                ch++;
                for (; i < MAXLINE; i++)
                    buf[i] = ch;
                buf[i-1] = '
    ';
                ch++;
                write(pfd[1], buf, sizeof(buf));
                sleep(2);
            }
            close(pfd[1]);
        }
        else if (pid > 0) {
            struct epoll_event event;
            struct epoll_event resevent[10];
            int res, len;
            close(pfd[1]);
            efd = epoll_create(10);
            /* ET 边沿触发 ,默认是水平触发 */
            event.events = EPOLLIN | EPOLLET;
            /* event.events = EPOLLIN; */
            event.data.fd = pfd[0];
            epoll_ctl(efd, EPOLL_CTL_ADD, pfd[0], &event);
            while (1) {
                res = epoll_wait(efd, resevent, 10, -1);
                printf("res %d
    ", res);
                if (resevent[0].data.fd == pfd[0]) {
                    len = read(pfd[0], buf, MAXLINE/2);
                    write(STDOUT_FILENO, buf, len);
                }
            }
            close(pfd[0]);
            close(efd);
        }
        else {
            perror("fork");
            exit(-1);
        }
    
        return 0;
    }
    

      

  • 相关阅读:
    not syncing: Attempted to kill init
    PhpStudy如何开启Apache的gzip压缩功能?
    去掉桌面图标快捷箭头
    PS中10种样式操作
    Mysql数据库报错1264
    宝塔建站
    VB错误说明
    Flash的swf文件破解
    PS快捷键
    Mysql双向同步热备份设置
  • 原文地址:https://www.cnblogs.com/yjds/p/9090316.html
Copyright © 2011-2022 走看看