#include <stdio.h>
#include <sys/epoll.h>
#include <string.h>
#include <unistd.h>
int main()
{
int fd[2];
pipe(fd);
pid_t pid;
pid = fork();
if (pid < 0)
perror("");
if (pid == 0)
{
close(fd[0]);
char buf[16];
char ch = 'a';
while (1)
{
memset(buf, ch++, sizeof(buf));
write(fd[1], buf, sizeof(buf));
sleep(2);
}
}
else
{
close(fd[1]);
int epfd = epoll_create(1);
struct epoll_event ev;
ev.data.fd = fd[0]; // 指定监听的文件描述符
ev.events = EPOLLIN; // 指定监听读事件
epoll_ctl(epfd, EPOLL_CTL_ADD, fd[0], &ev);
struct epoll_event evs[16];
while (1)
{
int num = epoll_wait(epfd, evs, 16, -1);
if (num == 1)
{
char buf[16] = "";
int ret = read(fd[0], buf, sizeof(buf));
if (ret <= 0)
{
close(fd[0]);
epoll_ctl(epfd, EPOLL_CTL_DEL, fd[0], &ev);
break;
}
else
{
printf("%s\n", buf);
}
}
}
}
return 0;
}
epoll并发服务器
最新推荐文章于 2024-07-09 23:56:42 发布