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

📄 spwd.c

📁 unix linux 编程实践源代码
💻 C
字号:
/* spwd.c: a simplified version of pwd * *	starts in current directory and recursively *	climbs up to root of filesystem, prints top part *	then prints current part * *	uses readdir() to get info about each thing * *      bug: prints an empty string if run from "/" **/#include	<stdio.h>#include	<sys/types.h>#include	<sys/stat.h>#include	<dirent.h>ino_t	get_inode(char *);void    printpathto(ino_t);void    inum_to_name(ino_t , char *, int );int main(){	printpathto( get_inode( "." ) );	/* print path to here	*/	putchar('\n');				/* then add newline	*/	return 0;}void printpathto( ino_t this_inode )/* *	prints path leading down to an object with this inode *	kindof recursive */{	ino_t	my_inode ;	char	its_name[BUFSIZ];	if ( get_inode("..") != this_inode )	{		chdir( ".." );				/* up one dir	*/		inum_to_name(this_inode,its_name,BUFSIZ);/* get its name*/		my_inode = get_inode( "." );		/* print head	*/		printpathto( my_inode );		/* recursively	*/		printf("/%s", its_name );		/* now print	*/							/* name of this	*/	}}void inum_to_name(ino_t inode_to_find , char *namebuf, int buflen)/* *	looks through current directory for a file with this inode *	number and copies its name into namebuf */{	DIR		*dir_ptr;		/* the directory */	struct dirent	*direntp;		/* each entry	 */	dir_ptr = opendir( "." );	if ( dir_ptr == NULL ){		perror( "." );		exit(1);	}	/*	 * search directory for a file with specified inum	 */	while ( ( direntp = readdir( dir_ptr ) ) != NULL )		if ( direntp->d_ino == inode_to_find )		{			strncpy( namebuf, direntp->d_name, buflen);			namebuf[buflen-1] = '\0';   /* just in case */			closedir( dir_ptr );			return;		}	fprintf(stderr, "error looking for inum %d\n", inode_to_find);	exit(1);}ino_t get_inode( char *fname )/* *	returns inode number of the file */{	struct stat info;	if ( stat( fname , &info ) == -1 ){		fprintf(stderr, "Cannot stat ");		perror(fname);		exit(1);	}	return info.st_ino;}

⌨️ 快捷键说明

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