繁体   English   中英

如何在Linux Terminal中的目录下显示详细的文件信息? -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调用的内容替换当前正在运行的程序。 如果在调用execvp之前放置了cout行,则应该看到预期的输出。 如果要在调用execvp之后打印这些行,则需要使用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从而使您可以对ls -la进行exec调用。

暂无
暂无

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

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