1

誰でもこのコードの問題を見つけてください。問題は、内容やファイルが異なっていても、すべてのパス名に対して同じ出力が表示されることです。

#include<stdio.h>  
#include<sys/stat.h>
#include<unistd.h>  
#include<sys/types.h>
#include<sys/vfs.h>
int main(int argc,char *argv[])  
{
    struct statfs sb;
    if((statfs(argv[1],&sb))==0)
    {
            printf("optimal transfer blk size is %d\n",sb.f_bsize);
            printf("total data blocks are %d\n",sb.f_blocks);
            printf("free blocks in fs are %d\n",sb.f_bfree);
            printf("total file nodes in fs are %d\n",sb.f_files);
            printf("free file nodes in fs are %d\n",sb.f_ffree);
    }
}

[testuser@hdchshocms6344 ex4]$ ./a.out /home/testuser
optimal transfer blk size is 4096  
total data blocks are 8819390
free blocks in fs are 6771045  
total file nodes in fs are 2240224  
free file nodes in fs are 1927385 

[testuser@hdchshocms6344 ex4]$ ./a.out /home/testuser/harish
optimal transfer blk size is 4096
total data blocks are 8819390
free blocks in fs are 6771034
total file nodes in fs are 2240224
free file nodes in fs are 1927386

前もって感謝します。

4

1 に答える 1

1

statfsディレクトリではなく、マウントされたファイルシステムの情報を提供します。/home/testuser/harishが完全に異なるファイルシステムでない限り(つまり、その場所にパーティションをマウントした場合) /home/testuser、.

于 2012-05-02T05:39:54.353 に答える