ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Introduction to Linux - A Hands on Guide
This guide was created as an overview of the Linux Operating System, geared toward new users as an exploration tour and getting started guide, with exercises at the end of each chapter.
For more advanced trainees it can be a desktop reference, and a collection of the base knowledge needed to proceed with system and network administration. This book contains many real life examples derived from the author's experience as a Linux system and network administrator, trainer and consultant. They hope these examples will help you to get a better understanding of the Linux system and that you feel encouraged to try out things on your own.
Click Here to receive this Complete Guide absolutely free.
In C++, what is the best way to find the total storage allocated in a directory? I am familiar with stat and statfs which returns allocations of a file and total disk, respectively, but how to you get the allocated space of the contents of a directory?
Summing file size can lead to very different results than the real size the directory is using on the disk:
Files smaller that the allocation unit would lead you to think less space is used that the real one.
Sparse files will make you think the opposite (puzzle people by creating a 2 Gb file on a 1Gb partition).
Finally, pay attention not to count multiple times files sharing the same inode (hard-links).
Good points jlliagre, I forgot about sparse files. Of course, if he only wants the physical disk space used, then this method won't cause him trouble...
If you check the st_nlink member to make sure it's 1, you won't have a hardlink issue (if it is >1, add st_ino to an array, and check any future files with nlink > 1 against this array, that should be enough to avoid hard link issues. Also, you may want to use lstat instead of stat to correctly count space used by symbolic links).