如何在Linux终端的目录下显示详细的文件信息?-C++
how to show detailed file information under a directory in Linux Terminal? - C++
所以这个程序应该打印目录下的所有文件信息。下面是我的 c++ 代码:
#include <iostream>
#include <unistd.h>
#include <cstdio>
#include <sys/types.h>
using namespace std;
int main(int argc, char *argv[]){
execvp("/bin/ls",&argv[0]);
fork(); // should I put it here?
perror("failed to execute the command");
cout<< "The PID is " << getpid() <<endl;
return 0;
}
我认为该命令应该ls -a
但是如何在程序中实现它?目前它只打印所有文件,而不是每个文件的信息。
另外,如何打印PID?因为getpid()
功能似乎不起作用。
谢谢!
要获取较长的文件列表,该命令是 ls -l
。要同时包含隐藏文件(以 .
开头的文件),该命令是 ls -a
。当然,这些可以组合成ls -la
,这将给出给定目录中所有文件的长列表。
此外,使用您拥有的代码,execvp
调用后的代码行将永远不会运行。当您调用 exec
函数时,它会将当前正在运行的程序替换为您通过 exec
调用的任何程序。如果将cout
线放在调用execvp
之前,则应看到预期的输出。如果你想在调用execvp
后打印这些行,你需要使用 fork
,它实质上是创建程序的副本作为原始程序的子程序。如果这是您希望实现的功能类型,这应该会为您提供一些关于 fork 的好资源。
要在 C 中正确调用 fork,您的代码将如下所示:
pid_t pid = fork();
if(pid == -1) //if there was an error
...
else if(pid > 0) //if child who resulted from the fork
...
else //if the parent who called the fork
...
我不太确定你的意图,所以我会让你填写代码,但这是使用 fork 的一般意义。
若要将参数传递给execvp
调用,请为其提供一个已在代码中执行的字符串数组。您将所有参数传递给execvp
调用,因此在编译后,运行./a.out -la
应该传递-la
为您提供exec
调用ls -la
。
相关文章:
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- 创建进行生产构建并创建调试信息的C++生成文件的最佳方法?
- 将对象信息保存到二进制文件中
- 错误 VSP1011:无法获取调试信息.与 /配置文件链接器开关链接
- Qt读取文本文件的一些信息
- 将文件信息(字符数组)嵌入到编译的二进制文件中
- 从带有 getline() 的文件读入一行上有多个信息得到无效参数错误
- 如何使用所有其他文件信息来编译代码,例如HAAR级联训练的权重的XML文件
- 是否可以将信息从XML文件转换为CPP
- 如何在文本文件中搜索员工记录(按名称)并仅显示其详细信息?
- CVE解析文件信息
- C++Pig拉丁代码,只删除文件信息
- 如何在Linux终端的目录下显示详细的文件信息?-C++
- CaptureStackBackTrace和文件信息
- 如何在 Linux 中获取当前目录下的文件信息
- 如何获取文件信息
- 损坏的配置文件信息与g++和CMake
- fscanf,逗号文本文件信息字符串和数字
- 添加资源.Rc文件信息项目
- 在用c++或c#打开文件之前检测文件信息