首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Execvp与"ls -l| wc“一起工作,但以"ls -l|wc”失败

Execvp是一个系统调用函数,用于在Linux系统中执行一个新的程序。它接受两个参数,第一个参数是要执行的程序的路径,第二个参数是一个字符串数组,用于传递给新程序的命令行参数。

"ls -l| wc"是一个命令行命令,它使用管道符号(|)将两个命令连接起来。首先,"ls -l"命令会列出当前目录下的文件和文件夹,并以长格式显示。然后,将该输出通过管道传递给"wc"命令,它会统计输入中的行数、字数和字符数。

在执行"ls -l| wc"时,应该使用shell来解析和执行该命令。然而,Execvp函数并不会调用shell来执行命令,它只会直接执行指定的程序。因此,当使用Execvp来执行"ls -l| wc"时,会出现失败的情况。

要解决这个问题,可以使用popen函数来执行带有管道的命令。Popen函数可以创建一个管道,并执行指定的命令。它返回一个文件指针,可以用于读取命令的输出。

以下是一个示例代码,演示如何使用popen函数执行"ls -l| wc"命令:

代码语言:txt
复制
#include <stdio.h>

int main() {
    FILE *pipe;
    char buffer[128];

    // 执行命令并打开管道
    pipe = popen("ls -l| wc", "r");
    if (pipe == NULL) {
        printf("Failed to execute command\n");
        return 1;
    }

    // 读取命令的输出
    while (fgets(buffer, sizeof(buffer), pipe) != NULL) {
        printf("%s", buffer);
    }

    // 关闭管道
    pclose(pipe);

    return 0;
}

这段代码使用popen函数执行"ls -l| wc"命令,并读取命令的输出。你可以根据需要对输出进行进一步处理。

推荐的腾讯云相关产品:腾讯云服务器(CVM)和腾讯云容器服务(TKE)。腾讯云服务器提供了可靠的云计算基础设施,可以满足各种规模的应用需求。腾讯云容器服务是一种高度可扩展的容器管理服务,可以帮助您轻松部署、管理和扩展容器化应用程序。

腾讯云服务器(CVM)产品介绍链接:https://cloud.tencent.com/product/cvm 腾讯云容器服务(TKE)产品介绍链接:https://cloud.tencent.com/product/tke

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

linux系统编程之进程(三):exec系列函数和system函数

一、exec替换进程映象 在进程的创建上Unix采用了一个独特的方法,它将进程创建加载一个新进程映象分离。这样的好处是有更多的余地对两种操作进行管理。...                  char *const envp[]); 参数 path参数表示你要启动程序的名称包括路径名 arg参数表示启动程序所带的参数 返回值:成功返回0,失败返回...\n");     //  execlp("ls", "ls", "-l", NULL); // 带p会搜索PATH     //  execl("/bin/ls", "ls", "-l", NULL)...; // 带l为可变参数     //  execvp("ls", args); //args数组参数传递给main     //  execv("/bin/ls", args);     int ret... -l | wc -w */     //  system("ls -l | wc -w");     my_system("ls -l | wc -w");     return 0; } int

2.1K60
  • ls命令常见实用用法

    代表当前目录 ..代表上一级目录,当前目录为根目录时,...相同 .开头的文件为隐藏文件 有类似a->b的为链接文件,在文件权限列的开头是l 文件或目录名由除"/"和空字符“\0”之外的任意字符序列组成...ls -al # 列出当前目录所有文件,并且使用长格式显示所有信息,包括权限,大小,用户,时间等,ll作用相同 易读方式列出当前目录文件大小 相关参数-h(human-readable),如下所示...参数前面类似,最后跟上条件,例如列出所有te开头的文件: ls -al te* lrwxrwxrwx 1 hyb hyb 8 9月 13 21:19 test -> home.zip...ls -l | grep "^-" | wc -l #计算当前目录下文件数量 ls -lR | grep "^-" | wc -l #包括子目录 ls -lR | grep "^d" | wc -l...#计算当前目录下的目录数量,且不包括.和.. ls -lR | grep "^l" | wc -l #计算当前目录下的链接数量 列出目录下部分文件 当目录下文件较多时,可以结合more命令,只显示部分

    92010

    Linux管道符、重定向环境变量

    把多个 Linux 命令适当地组合到一起,使其协同工作,以便更加高效地处理数据。要做到这一点,就必须搞明白命令的输入重定向和输出重定向的原理。...在日常的学习和工作中,相较于输入重定向,我们使用输出重定向的频率更高,所以又将输出重定向分为了标准输出重定向和错误输出重定向两种不同的技术,以及覆盖写入追加写入两种模式。...所以,虽然针对这两个文件的操作都分别会在屏幕上输出一些信息,这两个操作的差异其实很大: [root@servera ~]# touch 1 [root@servera ~]# ls -l 1 -rw-r...~]# ls -l /etc/ | more 在修改用户密码时,通常都需要输入两次密码进行确认,这在编写自动化脚本时将成为一个非常致命的缺陷。...比如,可以使用下述命令来搜索/etc/目录中所有.conf 结尾的配置文件有哪些: [root@servera ~]# ls -l /etc/*.conf -rw-r--r--. 1 root root

    2.4K30

    如何在Linux中使用管道将命令的输出传递给其他命令?

    以下是一个示例:ls -l | sort在这个示例中,ls -l 命令用于列出当前目录下的文件和文件夹,并将结果通过管道传递给 sort 命令进行排序。最终,按照文件名的字母顺序输出排序后的结果。...以下是一个示例:cat file.txt | wc -l在这个示例中,cat file.txt 命令用于将文件 file.txt 的内容输出,并将结果通过管道传递给 wc -l 命令进行行数统计。...以下是一个示例:ls -l | sed 's/\.txt/\.doc/g'在这个示例中,ls -l 命令用于列出当前目录下的文件和文件夹,并将结果通过管道传递给 sed 命令进行替换操作。...,找出包含 "pattern" 的行,最后将结果再通过管道传递给 wc -l 命令进行行数统计,最终输出包含 "pattern" 的行数。...在实际使用中,可以根据需求选择适当的命令和管道组合,达到预期的结果。本文介绍了管道的基本语法和工作原理,并提供了一些常见的使用示例,包括排序、过滤、统计和替换等。

    1.2K30

    如何在Linux中使用管道将命令的输出传递给其他命令?

    以下是一个示例: ls -l | sort 在这个示例中,ls -l 命令用于列出当前目录下的文件和文件夹,并将结果通过管道传递给 sort 命令进行排序。...以下是一个示例: cat file.txt | wc -l 在这个示例中,cat file.txt 命令用于将文件 file.txt 的内容输出,并将结果通过管道传递给 wc -l 命令进行行数统计。...以下是一个示例: ls -l | sed 's/\.txt/\.doc/g' 在这个示例中,ls -l 命令用于列出当前目录下的文件和文件夹,并将结果通过管道传递给 sed 命令进行替换操作。...命令进行筛选,找出包含 "pattern" 的行,最后将结果再通过管道传递给 wc -l 命令进行行数统计,最终输出包含 "pattern" 的行数。...在实际使用中,可以根据需求选择适当的命令和管道组合,达到预期的结果。 本文介绍了管道的基本语法和工作原理,并提供了一些常见的使用示例,包括排序、过滤、统计和替换等。

    1.1K51

    Linux之磁盘分区挂载度

    分区方式 mbr分区 最多支持四个主分区 系统只能安装在主分区 扩展分区要占一个主分区 MBR最大只支持2TB,拥有最好的兼容性 gpt分区 支持无限多个主分区(操作系统可能限制,比如windows...磁盘状况查询 磁盘情况查询:df -h / df -l 实例 查询指定目录的磁盘占用情况:du -h /目录,默认为当前目录 -s:指定目录占用大小汇总 -h:带计量单位 -a:含文件 –max-depth...=1:子目录深度 -c:列出明细的同时,增加汇总值 实例 磁盘情况-工作实用指令 统计/home文件夹下文件的个数:ls -l /home | grep "^-" | wc -l 统计/home...文件夹下目录的个数:ls -l /home | grep "^d" | wc -l 统计/home文件夹下文件的个数,包括子文件夹里的:ls -lR /home | grep "^-" | wc -l...统计文件夹下目录的个数,包括子文件夹里的:ls -lR /home | grep "^d" | wc -l 树状显示目录结构:首先安装tree指令:yum install tree,tree 实例

    1.6K20

    【Linux】常用命令

    www.bilibili.com/video/av15976434/#page=5 Linux工具快速教程 https://www.cnblogs.com/zengjs/p/3169473.html 文件压缩解压...linux 查看目录下文件个数 基本指令 ls 统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l 统计某文件夹下目录的个数 ls -l |grep "^d"|wc -l...统计文件夹下文件的个数,包括子文件夹里的 ls -lR|grep "^-"|wc -l cd cd 目录a路径切换到目录a cd ..到上一级目录; cd -返回到上次的目录,类似windows...-name "*.DCM" | wc -l 统计当前目录以及子目录中包含.DCM字符的文件数目 //在Linux中,|表示将上一条输出作为下一条命令的输入,wc -l表示只显示列数 ls -l |grep...“^-“|wc -l 查看某文件夹下文件的个数 ls -lR|grep “^-“|wc -l 查看某文件夹以及子文件夹下文件的个数 find /data/...

    6.1K20

    Linux基础:文件及目录管理

    ./ | wc -l 复制目录 $cp -r source_dir dest_dir 目录切换 找到文件/目录位置:cd 切换到上一个工作目录: cd - 切换到home目录: cd or cd...~ 显示当前路径: pwd 更改当前工作路径为: path: $cd path 列出目录项 显示当前目录下的文件 ls 按时间排序,列表的方式显示目录项 ls -lrt 以上这个命令用到的频率如此之高...;列表方式显示; 给每项文件前面增加一个id编号(看上去更加整洁): >ls | cat -n 1 a 2 a.out 3 app 4 b 5 bin 6 config 注:.bashrc 在/home...能够提示命名是否执行成功or失败上述相同效果的是: if ls /proc; then echo suss; else echo fail; fi 重定向: ls proc/*.c > list...查找record.log中包含AAA,但不包含BBB的记录的总数: cat -v record.log | grep AAA | grep -v BBB | wc -l 总结 文件管理,目录的创建、

    81620

    一天一个 Linux 命令(2):ls 命令

    不列出任何有关组的信息 -h, –human-readable 容易理解的格式列出文件大小 (例如 1K 234M 2G) –si 类似 -h,文件大小取 1000 的次方而不是 1024 -H,...在这条命令中,使用到了两个参数,分别为“l”和“R”,当然,你也可以把他们放在一起使用,如下所示: ls -lR / 这种形式和上面的命令形式执行的结果是完全一样的。...: ls -l t* 可以查看当前目录下文件名“t”开头的所有文件的信息。...5.3 只列出文件下的子目录 ls -F /var/log |grep /$ 列出 /var/log 文件下面的子目录 ls -l /var/log | grep "^d" 5.4 列出目前工作目录下所有名称是...ls -l * |grep “^-“|wc -l #文件个数ls -l * |grep “^d”|wc -l #目录个数 5.7 在ls中列出文件的绝对路径 ls | sed “s:^:pwd/:”

    56710

    Linux清理磁盘空间常用命令

    chmod, chown, ls, stat 等不会修改些时间, 使用 ls -utl 可以按此时间顺序查看     ctime 最后一次状态修改时间, 如 chmod, chown 等状态时间改变修改时间不会改变... -l | grep "^-" | wc -l     # 查看当前目录下的文件数量(包含子目录中的文件)注意:R,代表子目录     ls -lR | grep "^-" | wc -l     # ...查看当前目录下的目录个数(不包含子目录中的目录)     ls -l | grep "^d" | wc -l     # 查看当前目录下的目录数量(包含子目录中的目录)注意:R,代表子目录     ls... -lR | grep "^d" | wc -l     # 统计所有"test"开头的目录下的全部文件数量     ls -lR test*/|grep "^-"| wc -l     # 统计当前目录下...{print SUM}' 找出已经删除空间未释放的大文件并清空 找出已经删除磁盘空间未释放的文件,如果文件已经删除,实际的磁盘空间未释放,这个时候文件句柄 fd 相关信息还在内存中,可以通过 lsof

    3.8K30

    Linux之ls命令——查看目录

    不列出任何有关组的信息 -h, –human-readable 容易理解的格式列出文件大小 (例如 1K 234M 2G) –si 类似 -h,文件大小取 1000 的次方而不是 1024 -H,...在这条命令中,使用到了两个参数,分别为“l”和“R”,当然,你也可以把他们放在一起使用,如下所示: 命令:ls -lR /home/peidachang 这种形式和上面的命令形式执行的结果是完全一样的。...例二:列出当前目录中所有“t”开头的目录的详细内容,可以使用如下命令: 命令:ls -l t* 可以查看当前目录下文件名“t”开头的所有文件的信息。...其实,在命令格式中,方括号内的内容都是可以省略的,对于命令ls而言,如果省略命令参数和操作对象,直接输入“ ls ”,则将会列出当前工作目录的内容清单。 ?...例六:计算当前目录下的文件数和目录数 命令: ls -l * |grep "^-"|wc -l ---文件个数 ? ls -l * |grep "^d"|wc -l ---目录个数 ?

    32K20
    领券