首页 > 其他分享 >popen函数

popen函数

时间:2024-07-01 21:22:01浏览次数:14  
标签:fp NULL 函数 pclose cmd popen char include

目的

开发过程中获取某个可执行文件的打印结果或者获取某个shell命令的打印结果

原理

FILE * popen ( const char * command , const char * type );
int pclose ( FILE * stream );

popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数。pclose() 函数关闭标准 I/O流,等待命令执行结束,然后返回 shell 的终止状态。如果 shell 不能被执行,则 pclose() 返回的终止状态与 shell 执行 exit 一样。

Linux代码

#include<iostream>
#include<stdio.h>
#include<string.h>
 
using namespace std;
int main()
{
    FILE *fp = NULL;
    char cmd[1024];
    char buf[1024];
    char result[4096];
    sprintf(cmd, "pwd");
    if( (fp = popen(cmd, "r")) != NULL)
    {
        while(fgets(buf, 1024, fp) != NULL)
        {
            strcat(result, buf);
        }
        pclose(fp);
        fp = NULL;
    }
    cout<<"result:"<<result<<endl;
    return 0;
}

运行结果

image

windows代码

#include<iostream>
#include<cstdio>
#include<string>

using namespace std;
int main()
{
    FILE* fp = NULL;
    char cmd[1024];
    char buf[1024];
    char result[4096] = {};
    sprintf_s(cmd, "dir");
    cout << "cmd:" << cmd << endl;
    if ((fp = _popen(cmd, "r")) != NULL)
    {
        while (fgets(buf, 1024, fp) != NULL)
        {
            strcat_s(result,sizeof(result), buf);
        }
        _pclose(fp);
        fp = NULL;
    }
    cout << "result:" << result << endl;
    return 0;
}

运行结果

image

标签:fp,NULL,函数,pclose,cmd,popen,char,include
From: https://www.cnblogs.com/bbkkp/p/18278858

相关文章

  • 深度学习之激活函数
    激活函数的公式根据不同的函数类型而有所不同。以下是一些常见的激活函数及其数学公式:Sigmoid函数:公式:f(x)=特性:输出范围在0到1之间,常用于二分类问题,将输出转换为概率值。但存在梯度消失问题,尤其在输入值较大或较小时。Tanh函数(双曲正切函数):公式:f(x)=特性:输出范围在-1......
  • Nuxt3 的生命周期和钩子函数(七)
    title:Nuxt3的生命周期和钩子函数(七)date:2024/6/30updated:2024/6/30author:cmdragonexcerpt:摘要:文章阐述了Nuxt3中Nitro生命周期钩子的使用,如nitro:config自定义配置、nitro:init注册构建钩子、nitro:build:before/after调整构建设置及处理公共资产、prerender:rou......
  • 激活函数(1)笔记
    ReLU函数最受欢迎的激活函数是修正线性单元(Rectifiedlinearunit,ReLU),因为它实现简单,同时在各种预测任务中表现良好。ReLU提供了一种非常简单的非线性变换。#导入PyTorch库importtorch#从d2l库中导入与PyTorch相关的模块(这里假设d2l是一个外部库或教程中定义的......
  • java中的函数式接口:(Consumer、BiConsumer、Supplier、Predicate、Function、BiFunctio
    Consumer说明:(1)consumer接口来自java8中引入的Java.util.function包(2)Consumer是一个功能接口,用来作为lambda表达式或方法引用的任务目标(传递一个参数执行指定的方法)。功能:Consumer的功能接口是一个接受单一参数并且不返回任何结果的操作。必要时,"结果"可以存在在集合......
  • C++纯虚函数的理解,纯虚函数和派生类的关系。
    在C++中,纯虚函数(purevirtualfunction)是一种特殊的虚函数,它在基类中没有实现,只定义了一个接口,要求派生类必须提供具体实现。纯虚函数的定义方式在接口设计和多态性中非常有用。纯虚函数的定义和语法在C++中,纯虚函数的定义使用以下语法:classBase{public:virtual......
  • 使用不同函数打印torch.nn模型——print(model),named_children(),named_modules():
    创建模型创建一个具有三级嵌套的模型,结构如图:importtorchimporttorch.nnasnn#定义子子模块classSubSubModule(nn.Module):def__init__(self):super(SubSubModule,self).__init__()self.conv=nn.Conv2d(3,3,kernel_size=3,padding=1)......
  • 内存管理-9-内存常用函数和宏
    基于msm-5.41.页与页帧号转换//include/asm-generic/memory_model.h#definepfn_to_page(pfn)(vmemmap+(pfn))#definepage_to_pfn(page)(unsignedlong)((page)-vmemmap)注:使能了CONFIG_SPARSEMEM_VMEMMAP才使用的是这一组宏。vmemmap是一个structpage*类......
  • 嵌入式Linux系统编程 — 5.5 sleep、usleep和nanosleep系统休眠函数
    目录1为什么需要休眠2 sleep、usleep和nanosleep函数2.1sleep函数2.2 usleep函数2.3 nanosleep函数3示例程序1为什么需要休眠有时需要将进程暂停或休眠一段时间,进入休眠状态之后,程序将暂停运行,直到休眠结束。以下是一些常见的休眠场景和作用:避免过载:在高......
  • 【FreeRTOS】两个Delay函数
    目录0前言1Delay函数1.1两个Delay函数1.2总结2程序2.1函数修改2.2总结0前言在我们实际开发过程中,一般都用事件开发不要使用死循环1Delay函数1.1两个Delay函数FreeRTOS中有两个Delay函数:vTaskDelay:至少等待指定个数的TickInterrupt才能变为就绪......
  • 内联函数(inline)
    ①概念引入多用于复用性强的函数(代码量较少具有特定功能的函数)坏处:让你的代码上下文很臃肿(冗余)好处:在复用性强的函数调用的时候直接插入函数代码段而不是进行函数跳转(编译器弄的),减少性能消耗提高运行效率。减少函数调用开销:函数调用涉及压栈、跳转等操作,会产生......