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

📄 pwd.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
/* * Print working (current) directory */#include	<stdio.h>#include	<sys/param.h>#include	<sys/stat.h>#include	<sys/dir.h>char	dot[]	= ".";char	dotdot[] = "..";char	name[512];int	file;int	off	= -1;struct	stat	d, dd;struct	direct	dir;main(){	int rdev, rino;	stat("/", &d);	rdev = d.st_dev;	rino = d.st_ino;	for (;;) {		stat(dot, &d);		if (d.st_ino==rino && d.st_dev==rdev)			prname();		if ((file = open(dotdot,0)) < 0) {			fprintf(stderr,"pwd: cannot open ..\n");			exit(1);		}		fstat(file, &dd);		chdir(dotdot);		if(d.st_dev == dd.st_dev) {			if(d.st_ino == dd.st_ino)				prname();			do				if (read(file, (char *)&dir, sizeof(dir)) < sizeof(dir)) {					fprintf(stderr,"read error in ..\n");					exit(1);				}			while (dir.d_ino != d.st_ino);		}		else do {				if(read(file, (char *)&dir, sizeof(dir)) < sizeof(dir)) {					fprintf(stderr,"read error in ..\n");					exit(1);				}				stat(dir.d_name, &dd);			} while(dd.st_ino != d.st_ino || dd.st_dev != d.st_dev);		close(file);		cat();	}}prname(){	write(1, "/", 1);	if (off<0)		off = 0;	name[off] = '\n';	write(1, name, off+1);	exit(0);}cat(){	register i, j;	i = -1;	while (dir.d_name[++i] != 0);	if ((off+i+2) > 511)		prname();	for(j=off+1; j>=0; --j)		name[j+i+1] = name[j];	off=i+off+1;	name[i] = '/';	for(--i; i>=0; --i)		name[i] = dir.d_name[i];}

⌨️ 快捷键说明

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