Попробуйте распечатать элемент st_rdev
. На странице руководства написано:
struct stat {
dev_t st_dev; /* device inode resides on */
[ ... snip ... ]
dev_t st_rdev; /* device type, for special file inode */
};
Я думаю, вы не печатаете то же поле, к которому обращается% r. Вас интересует не устройство, в котором находится файл устройства, а устройство, которое описывает файл.
Числа, по крайней мере, соответствуют вашему ls
выводу; major = 14 и minor = 0, и вы печатаете 234881024, что в шестнадцатеричном виде равно 0xE000000. 0xE - это, конечно, 14 десятичных знаков. Это означает, что Mac OS X хранит старший номер в старших 8 битах, а младший номер - в младших 24. Это, в свою очередь, означает, что тип dev_t
является 32-битным, что делает его печатью как long long
немного сомнительно.