⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function_restart.c

📁 多线程 http资源下载工具 给予linux平台的。还凑合。有bug给我联系
💻 C
字号:
#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/epoll.h>#include <sys/socket.h>#include <errno.h>int epoll_wait_restart (int fd_epoll, struct epoll_event *event,	\			       int max_event, int timeout){  int errno_old;  int retval;    errno_old = errno;  while ((-1 == (retval = epoll_wait (fd_epoll, event, max_event, timeout))) &&	\	 (EINTR == errno));  return retval;}ssize_t send_restart (int fd, const void *buf, size_t len, int flags){  ssize_t nbytes_remain;  ssize_t nbytes;  char *p;  int errno_old;    nbytes_remain = len;   p = (char *) buf;   errno_old = errno;     while (1)     {       errno = 0;       nbytes = send (fd, (void *) p, nbytes_remain, flags);              if (0 != errno)	 if (EINTR != errno)	   return -1;              p += nbytes;       nbytes_remain -=nbytes;       if (0 >= nbytes_remain)	 break;     }      errno = errno_old;   return 0;}ssize_t recv_restart (int fd, void *buf, size_t len, int flags){  ssize_t nbytes_recv;  while ((-1 == (nbytes_recv = recv (fd, buf, len, flags))) && (EINTR == errno));  return nbytes_recv; }ssize_t write_restart (int fd, const void *buf, size_t count){  ssize_t nbytes_remain;  ssize_t nbytes;  char *p;  int errno_old;    nbytes_remain = count;   p = (char *) buf;   errno_old = errno;     while (1)     {       errno = 0;       nbytes = write (fd, (void *) p, nbytes_remain);              if (0 != errno)	 if (EINTR != errno)	   return -1;              p += nbytes;       nbytes_remain -=nbytes;       if (0 >= nbytes_remain)	 break;     }      errno = errno_old;   return 0;}void close_restart (int fd){  while (-1 == close (fd) && EINTR == errno);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -