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

📄 writev.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <sys/types.h>#include <unistd.h>#include <string.h>/* bsd extensions */#include <sys/uio.h>#include <sys/socket.h>#include "priv.h"intwritev(int fd, struct iovec *v, int ent){	int i, n, written;	char *t, *e, *f;	char buf[10*1024];	written = n = 0;	t = buf;	e = buf+sizeof(buf);	for(;ent ; v++, ent--){		n = v->iov_len;		f = v->iov_base;		while(n > 0){			i = e-t;			if(n < i){				memmove(t, f, n);				t += n;				break;			}			memmove(t, f, i);			n -= i;			f += i;			i = write(fd, buf, sizeof(buf));			if(i < 0){				if(written > 0){					return written;				}else{					_syserrno();					return -1;				}			}			written += i;			if(i != sizeof(buf)) {				return written;			}			t = buf;		}	}	i = t - buf;	if(i > 0){		n = write(fd, buf, i);		if(n < 0){			if(written == 0){				_syserrno();				return -1;			}		} else			written += n;	}	return written;}

⌨️ 快捷键说明

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