繁体   English   中英

C ++程序对特定Linux目录中的对象数量进行计数

[英]C++ program to count number of objects in a particular Linux directory

我正在尝试使用C ++在Linux中编写一个程序,该程序计算用户指定目录中文件和文件夹的数量,但是我读得越多,就会感到困惑。 我是C ++和一般编程人员的新手,我知道我一开始就有很大的障碍,但是我不确定要从哪里开始着手阅读。 我已经阅读了一些有关派生流程和系统调用的信息,但是如果有人简要概述了实现该流程所必须经历的流程,那么我可以自己深入研究各种功能。

使用C ++, Boost.FileSystem为您提供方便的工具来实现所需的功能。

如果要学习基本的C API,请查看GNU C库手册中的文件系统接口

如果您真的想以Linux方式进行操作,请查看opendirreaddirclosedir系统调用。 有一个例子在这里 ,基本上是你正在尝试写程序(它打印的内容,而不是对其计数,虽然)。

如果我是您,我会坚持使用像Georg建议的更高级别的库。

在* nix上,您可以使用C库函数opendirreaddir

基本上,调用opendir()获取目录的句柄。 使用readdir()遍历该目录中的条目

最简单,最跨平台的方法是使用boost :: filesystem 在UNIX(Linux,Mac OS X,Free BSD等)上,有多种方法可以执行此操作。 正如已经指出的那样, opendirreaddirclosedir是可能的。 我应该指出,最好使用可重入的readdir_r (这意味着可以安全地从多个不同的线程中同时使用),而不是使用readdir_r ,而普通的readdir调用是不可重入的(因此不能由readdir保证)单一UNIX规范/ IEEE Std.1003.1,又名POSIX(是线程安全的)。 尽管这些可能不是最容易使用并且不适用于此特定任务,但对于执行文件系统的其他操作,您可能还对nftwftw感兴趣,它们特别适合于对文件系统的子树进行操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM