C语言 工具型API -----------popen()

这篇具有很好参考价值的文章主要介绍了C语言 工具型API -----------popen()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, char const *argv[])
{
    FILE *fb = popen("find  ../ -name '*.bmp' -o -name '*.png' -o -name '.jbg' ", "r");
    char buf[100];
    char data[5000][1024];
    char path1[200];
    char path2[] = {"./"};
    int i=0;
    while (1)
    {
        memset(buf, 0, sizeof(buf));
        fgets(buf, 100, fb);
        if (feof(fb))
        {
            perror("fgets");
            break;
        }
        if (strstr(buf, ".bmp") || strstr(buf, ".jbg") || strstr(buf, ".png"))
        {
            buf[strlen(buf)-1]='\0';
            strcpy(data[i], buf);
            i++;
            sprintf(path1, "cp %s %s", buf, path2);
            printf("path1=%s\n", path1);
            system(path1);
        }
       
        
    }
    return 0;
}

        这段代码是用shell命令查找指定目录下的图片文件,并将其复制到指定目录下。

以下还一段百度的代码可供参考阅读。

#include<stdio.h>
#define _LINE_LENGTH 300
int main(void) 
{
    FILE *file;
    char line[_LINE_LENGTH];
    file = popen("ls", "r");
    if (NULL != file)
    {
        while (fgets(line, _LINE_LENGTH, file) != NULL)
        {
            printf("line=%s\n", line);
        }
    }
    else
    {
        return 1;
    }
    pclose(file);
    return 0;
}

                                               POPEN(3)

NAME
       popen, pclose - pipe stream to or from a process

SYNOPSIS
       #include <stdio.h>

函数原型       

FILE *popen(const char *command, const char *type);

       int pclose(FILE *stream);

功能

        创建一个新进程并加载一个新进程,背后原理是,先用fork()创建一个新的进程,同时调用exec函数族重新加载程序运行shell命令。popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数。pclose() 函数关闭标准 I/O 流,等待命令执行结束,然后返回 shell 的终止状态。如果 shell 不能被执行,则 pclose() 返回的终止状态与 shell 已执行 exit 一样。次函数功能与system()有着异曲同工之妙,但多了一个可以直接读取其获取的输出信息。

参数

type 参数只能是读或者写中的一种,得到的返回值(标准 I/O 流)也具有和 type 相应的只读或只写类型。如果 type 是 "r" 则文件指针连接到 command 的标准输出;如果 type 是 "w" 则文件指针连接到 command 的标准输入。

command 参数是一个指向以 NULL 结束的 shell 命令字符串的指针。这行命令将被传到 bin/sh 并使用-c 标志,shell 将执行这个命令。

成功返回值

        popen 的返回值是个标准 I/O 流,标准I/O流中的数据是shell程序运行的标准输出的数据,可用标准I/O读取。

失败返回值

        popen 没有为内存分配失败设置 errno 值。

        如果调用 fork() 或 pipe() 时出现错误,errno 被设为相应的错误类型。

        如果 type 参数不合法,errno将返回EINVAL。

        如果调用 fork() 或 pipe() 失败,或者不能分配内存将返回NULL;文章来源地址https://www.toymoban.com/news/detail-661320.html

到了这里,关于C语言 工具型API -----------popen()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 项目开发常用的API推荐

    历史天气预报:可查询国内指定城市的历史天气预报数据,最长可查询至2018年1月1日。目前支持3400+国内城市的历史预报数据查询,同时也支持国内任意经纬度查询。 全国快递物流查询:目前已支持600+快递公司的快递信息查询。自动识别快递公司及单号,服务器毫秒响应,数

    2024年02月10日
    浏览(38)
  • 盘点好用的API管理软件,API管理开发工具Postman

    Postman是一款简单高效的api管理开发工具,你可以在组织良好的图形用户界面中管理,组织和测试API,并加速新应用程序的开发。Postman破解版为您提供了为API创建和组织HTTP请求的可能性,同时还集成了测试功能。您可以创建自定义方案并以简化的方式分析API响应。而且由于云

    2023年04月08日
    浏览(39)
  • Java语言常用的算法

    排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序等。 查找算法:顺序查找、二分查找、哈希查找等。 字符串匹配算法:暴力匹配、KMP算法、Boyer-Moore算法等。 图论算法:最短路径算法、最小生成树算法、拓扑排序等。 动态规划算法:背

    2024年02月15日
    浏览(41)
  • C语言再学习 -- Linux常用网络调试工具

    参看:Linux常用网络调试工具 linux常用指令,之前我也总结了不少了。 参看:C语言再学习 – Linux 中常用基本命令 参看:Hi3516A开发–环境搭建工具 下面看看网络调试相关的工具: ifconfig 命令用于检查或设置机器上的网卡。 ping 命令是最常用的命令之一,用于检查两个设备之

    2024年01月21日
    浏览(45)
  • Python语言实现各种常用算法

    算法的详细介绍 算法是一组用于解决特定问题的步骤和指令,它是计算机科学中最重要的概念之一。算法是一种精确而又有效的方法,它通常表现为一组可行的操作,可以用来解决各种计算机问题。算法是一个计算机程序的核心组成部分,它将输入数据转换为所需的输出。

    2024年02月11日
    浏览(41)
  • 开发规范及常用工具

    entity : 是与数据库一一对应的字段 vo : 返回给前端的视图对象 dto : 前端传过来的参数封装成dto,用于返回给前端的对象,一般用于查询操作。 POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。 注意:数据库中拼接字段中间使用下划线(_)进行分割,而实体类中拼接字段采用的是驼峰映射

    2024年02月01日
    浏览(43)
  • 12个免费的API设计、开发和测试工具

    这些免费和免费层的服务和开源实用程序将使您的api立即启动并运行,并保持它们平稳运行。 RESTful api的兴起伴随着创建、测试和管理它们的工具的兴起。无论你是一个构建第一个API的新手,还是一个在棘手的截止日期前赛跑的专家,你都有一系列的服务来帮助你 将API从概念

    2024年04月24日
    浏览(42)
  • JAVA开发常用测试工具

    什么是junit JUnit 是一个用于编写和运行单元测试的开源框架,是Java 开发中最常用的单元测试框架之一。它为 Java 开发者提供了一种简单、灵活且可扩展的方式来编写自动化测试代码,并帮助开发者进行单元测试的管理和执行。 JUnit 提供了一组注解和断言方法,使开发者能够

    2024年04月25日
    浏览(55)
  • 前端开发常用哪些工具软件?

    前端开发必备工具,一篇文章一网打尽 文章目录            一、前端提高“生产力”工具 1.WebStorm 2. 远程开发 - VSCode 3. 接口测试 - Postman 4.API在线文档生成和测试 - SwaggerUI 5.抓包工具 - Wireshark 6.通用数据库管理 - DBeaver 7.MD编辑器 - Typora 8.虚拟机 - VirtualBox 9.Git存储库托管 -

    2023年04月08日
    浏览(44)
  • 先进API生产力工具eqable HTTP,一站式开发调试工具推荐

    Reqable是什么? Regable = Fiddler/Charles + Postman Reqable是HTTP一站式开发+调试国产化解决方案,拥有更便捷的体验,更先进的协议,更高效的性能和更精致的界面。 Reqable是一款跨平台的专业HTTP开发和调试工具,在全平台支持HTTP1、HTTP2和HTTP3(QUIC)协议,简单易用、功能先进、性能高效

    2024年02月11日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包