DEVNAME(3) | FreeBSD Library Functions Manual | DEVNAME(3) |
名称
devname — デバイス名を得るライブラリ
Standard C Library (libc, -lc)書式
#include < sys/stat.h>#include < stdlib.h>
char *
devname( dev_t dev, mode_t type);
char *
devname_r( dev_t dev, mode_t type, char *buf, int len);
char *
fdevname( int fd);
char *
fdevname_r( int fd, char *buf, int len);
解説
devname() 関数は、 dev のデバイス番号がある /dev 中のブロックデバイスまたはキャラクタデバイスの名前へのポインタと S_IFBLK または S_IFCHR の 1 つでなければならない type でエンコードされたものと一致するファイルタイプを返します。正しい名前を見つけるために、 devname() は、 kern.devname sysctl によってカーネルに問い合わせます。それが適切な名前を見つけ出すことができないなら、それは、人間に読み込み可能な形式で dev と type にカプセル化された情報を書式化します。fdevname() と fdevname_r() 関数は、キャラクタデバイスを指すファイル記述子から、直接デバイス名を取得します。適切な名前を見つけ出すことができないなら、これらの関数は、NULL ポインタを返します。
devname() と fdevname() は、その後の呼び出しで上書きされる静的なバッファに格納された名前を返します。 devname_r() と fdevname_r() は、この問題を避けるために引数としてバッファと長さ取ります。
使用例
int fd; struct stat buf; char *name; fd = open("/dev/tun"); fstat(fd, &buf); printf("devname is /dev/%s\n", devname(buf.st_rdev, S_IFCHR)); printf("fdevname is /dev/%s\n", fdevname(fd));
関連項目
stat(2)歴史
devname() 関数は、 4.4BSD で登場しました。 fdevname() 関数は、 FreeBSD 8.0 で登場しました。February 22, 2005 | FreeBSD |