两个问题

1.QNX下如何实现分区,用FDISK后在程序里如何访问,也是向WINDOWS下的盘符吗?
2.QNX下用哪个函数可以读出当前硬盘剩余的字节数,通常C下的Getdfree()在QNX下没有找到,顺便问一下,在QNX自带的文件管理器下没有办法读出某个子目录下的多个文件的总字节信息和当前硬盘的剩余空间信息(是不是通过命令可以查出来)。
请回答,谢谢。

  1. fdisk 分区,dinit初始化,mount用来为分区分配目录(mount point)。另外,所有分区在开机时都会被自动mount到 /fs 下面。(devb-eide的auto=partition参数)

  2. fstat() 好象可以得到分区中所没有用的字节数。命令 du 也可以用来计算子目录的大小.

fstat()好象只能得到某个文件的信息,看了一下HELP中stat()可以得到某个目录的信息,但是得到的st_size是什么含义呢?我发现大多数目录返回的st_size都是4096byte

statvfs() 可以得到文件系统的信息。

目录下的文件总字节数只有 opendir()/readdir()/closedir(),自己来加(du就是这样做的)

那我如何知道当前硬盘的剩余空间呢?不会让我一个一个文件加吧

“硬盘的剩余空间”这个概念是不确切的 :smiley:

如果你的硬盘有3个分区,你是说除了这三个分区以外,还有多少未被分配的空间?
你提到了“一个一个文件加”,所以估计你想知道的是“这个分区的文件系统还有多少
剩余空间”,这个用statvfs()函数可以得到。

唐先生,比如在我的目标系统上需要建立三个QNX分区,第一个分区用来存放程序,后两个分区用来存放数据,我需要定时来查询后两个分区中还用多少空间(如剩余空间不够则要删除一些数据),这怎样来实现呢?如果按您说的用STATVFS(),那么第一个参数PATH该如何设置呢?谢谢

另外两个分区,你mount在那里,就用那个目录就可以了。其实,任何一个分区中的文件都可以的。

如何使用mount呢?请唐先生指教

你的另外两个存放数据的分区,你是如何“存放”的呢?
你读写哪些文件来“存放”数据的? statvfs() 那些文件就可以了。自己写一个程序试一下statvfs()你就知道我说的是什么意思了。

唐先生,我试着用statvfs()来得到当前硬盘中剩余空间的信息(我的目标系统只有QNX),我的代码是statvfs("/",&buffer);,前面一个参数代表根目录,后面是返回的结构体指针,但是buffer中哪个参数可以得到我需要的信息呢?我的用法对不对?请指教

From:

http://www.qnx.com/developers/docs/momentics621_docs/neutrino/lib_ref/s/statvfs.html

fsblkcnt_t f_bfree
    The total number of free blocks. 
fsblkcnt_t f_bavail
    The number of free blocks available to a nonsuperuser.

这些参数返回的到底是什么呢?我需要知道的是字节数,就像在WINDOW的资源管理器中选择一个盘符,可以从属性中知道当前这个盘上剩余多少字节。

"block‘的个数,一个"block"有多少字节在同一个结构的 f_bsize 里。

终于搞懂了,谢谢唐先生的耐心回答