|
debian6.0
我使用了如下程序片断:
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
- int main()
- {
- struct stat statbuf;
- if (!stat("./ttt", &statbuf)) {
- printf("%x\n%d\n", statbuf.st_dev, statbuf.st_ino);
- }
- return(0);
- }
复制代码
ttt是a.out相同目录下的一个文本文件。
用stat获得其文件信息。
用printf打印st_dev和st_ino,发现我用这个程序始,st_ino始终被打印为0。
然后我使用了如下代码:
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
- int main()
- {
- struct stat statbuf;
- if (!stat("./ttt", &statbuf)) {
- printf("%x\n", statbuf.st_dev);
- printf("%d\n", statbuf.st_ino);
- }
- return(0);
- }
复制代码
此时st_ino可以被正确输出。
为了测试,我又使用了如下代码:
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
- int main()
- {
- struct stat statbuf;
- int tmp;
- if (!stat("./ttt", &statbuf)) {
- tmp = statbuf.st_ino;
- printf("%x\n%d\n", statbuf.st_dev, statbuf.st_ino);
- printf("%d\n", tmp);
- }
- return(0);
- }
复制代码
此时tmp的值为真确的st_ino值,而第一个printf的st_ino仍然被输出为0。
请问这是什么原因呢? |
|