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

📄 display.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <bio.h>#include <draw.h>#include "sky.h"voiddisplaypic(Picture *pic){	int p[2];	int i, n;	uchar *a;		if(pipe(p) < 0){		fprint(2, "pipe failed: %r\n");		return;	}	switch(rfork(RFPROC|RFFDG|RFNOTEG|RFNOWAIT)){	case -1:		fprint(2, "fork failed: %r\n");		return;	case 0:		close(p[1]);		dup(p[0], 0);		close(p[0]);		execl("/bin/page", "page", "-w", nil);		fprint(2, "exec failed: %r\n");		exits("exec");	default:		close(p[0]);		fprint(p[1], "%11s %11d %11d %11d %11d ",			"k8", pic->minx, pic->miny, pic->maxx, pic->maxy);		n = (pic->maxx-pic->minx)*(pic->maxy-pic->miny);		/* release the memory as we hand it off; this could be a big piece of data */		a = pic->data;		while(n > 0){			i = 8192 - (((uintptr)a)&8191);			if(i > n)				i = n;			if(write(p[1], a, i)!=i)				fprint(2, "write error: %r\n");			if(i == 8192)	/* page aligned */				segfree(a, i);			n -= i;			a += i;		}		free(pic->data);		free(pic);		close(p[1]);		break;	}}voiddisplayimage(Image *im){	int p[2];		if(pipe(p) < 0){		fprint(2, "pipe failed: %r\n");		return;	}	switch(rfork(RFPROC|RFFDG|RFNOTEG|RFNOWAIT)){	case -1:		fprint(2, "fork failed: %r\n");		return;	case 0:		close(p[1]);		dup(p[0], 0);		close(p[0]);		execl("/bin/page", "page", "-w", nil);		fprint(2, "exec failed: %r\n");		exits("exec");	default:		close(p[0]);		writeimage(p[1], im, 0);		freeimage(im);		close(p[1]);		break;	}}

⌨️ 快捷键说明

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