ttyname.c

来自「unix v7是最后一个广泛发布的研究型UNIX版本」· C语言 代码 · 共 50 行

C
50
字号
/* * ttyname(f): return "/dev/ttyXX" which the the name of the * tty belonging to file f. *  NULL if it is not a tty */#define	NULL	0#include <sys/types.h>#include <sys/dir.h>#include <sys/stat.h>static	char	dev[]	= "/dev/";char	*strcpy();char	*strcat();char *ttyname(f){	struct stat fsb;	struct stat tsb;	struct direct db;	static char rbuf[32];	register df;	if (isatty(f)==0)		return(NULL);	if (fstat(f, &fsb) < 0)		return(NULL);	if ((fsb.st_mode&S_IFMT) != S_IFCHR)		return(NULL);	if ((df = open(dev, 0)) < 0)		return(NULL);	while (read(df, (char *)&db, sizeof(db)) == sizeof(db)) {		if (db.d_ino == 0)			continue;		if (db.d_ino != fsb.st_ino)			continue;		strcpy(rbuf, dev);		strcat(rbuf, db.d_name);		if (stat(rbuf, &tsb) < 0)			continue;		if (tsb.st_dev==fsb.st_dev && tsb.st_ino==fsb.st_ino) {			close(df);			return(rbuf);		}	}	close(df);	return(NULL);}

⌨️ 快捷键说明

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