📄 util.h
字号:
/* * Copyright (c) 2005 Alf Schlichting * All rights reserved. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */#include <stdio.h>#include <errno.h>int read_sock(int, char *, int);int write_sock(int, char *, int);/* Helper functions to handle EINTR and EAGAIN */intread_sock(int fd, char *buf, int len){ int n, pos; char *p; p = buf; n = pos = 0; while (len > pos) { n = read(fd, p + pos, len - pos); switch (n) { case -1: if (errno != EINTR && errno != EAGAIN) return(-1); else continue; case 0: return(0); default: pos += n; } } return pos;}intwrite_sock(int fd, char *buf, int len){ int n, pos; char *p; p = buf; n = pos = 0; while (len > pos) { n = write(fd, p + pos, len - pos); switch (n) { case -1: if (errno != EINTR && errno != EAGAIN) return(-1); else continue; case 0: return(0); default: pos += n; } } return pos;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -