2010年(22)
分类: LINUX
2010-07-24 11:28:03
在获取线程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,而输出格式为%ld。