Last Update:8/15
在获取线程ID的时候,常用到pthread_self()函数获取当前线程的ID,它返回的ID是pthread_t类型的。如果要打印出线程ID,用什么输出格式呢?
在此书中例题8_1中使用的是%u,即unsigned int,但是编译时候有一个warning:
format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘pthread_t’。
其实线程ID的格式应该是unsigned long,所以输出格式为:%lu。再次编译就对了。linux中还有一些ID类的数据类型,比如常见的pid,它的输出格式为%d;
再比如文件状态结构体struct stat *buf中的st_ino字段,它的类型为ino_t,而输出格式为%lu。在内核的inode结构体(include/linux/fs.h)中可以找到这个字段的最终面目:unsigned long i_ino;它便是索引结点号。