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

📄 webget.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
/* * Sample client. */#include <u.h>#include <libc.h>voidxfer(int from, int to){	char buf[12*1024];	int n;	while((n = read(from, buf, sizeof buf)) > 0)		if(write(to, buf, n) < 0)			sysfatal("write failed: %r");	if(n < 0)		sysfatal("read failed: %r");}voidusage(void){	fprint(2, "usage: webget [-b baseurl] [-m mtpt] [-p postbody] url\n");	exits("usage");}voidmain(int argc, char **argv){	int conn, ctlfd, fd, i, n;	char buf[128], *base, *mtpt, *post, *url;	mtpt = "/mnt/web";	post = nil;	base = nil;	ARGBEGIN{	default:		usage();	case 'b':		base = EARGF(usage());		break;	case 'm':		mtpt = EARGF(usage());		break;	case 'p':		post = EARGF(usage());		break;	}ARGEND;	if (argc != 1) 		usage();	url = argv[0]; 	snprint(buf, sizeof buf, "%s/clone", mtpt);	if((ctlfd = open(buf, ORDWR)) < 0)		sysfatal("couldn't open %s: %r", buf);	if((n = read(ctlfd, buf, sizeof buf-1)) < 0)		sysfatal("reading clone: %r");	if(n == 0)		sysfatal("short read on clone");	buf[n] = '\0';	conn = atoi(buf);	if(base)		if(fprint(ctlfd, "baseurl %s", base) < 0)			sysfatal("baseurl ctl write: %r");	if(fprint(ctlfd, "url %s", url) <= 0)		sysfatal("get ctl write: %r");	if(post){		snprint(buf, sizeof buf, "%s/%d/postbody", mtpt, conn);		if((fd = open(buf, OWRITE)) < 0)			sysfatal("open %s: %r", buf);		if(write(fd, post, strlen(post)) < 0)			sysfatal("post write failed: %r");		close(fd);	}	snprint(buf, sizeof buf, "%s/%d/body", mtpt, conn);	if((fd = open(buf, OREAD)) < 0)		sysfatal("open %s: %r", buf);	xfer(fd, 1);	exits(nil);}

⌨️ 快捷键说明

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