作者共发了3篇帖子。 字体大小:较小 - 100% (默认)▼  内容转换:不转换▼
 
点击 回复
16 2
【转载】windows下C与C++执行cmd命令并实时获取printf输出
一派掌门 二十级
1楼 发表于:2026-5-6 17:09
#include <stdio.h>
#include <string.h>

int run_cmd(const char * cmd)
{
    char MsgBuff[1024];
    int MsgLen=1020;
    FILE * fp;
    if (cmd == NULL)
    {
        return -1;
    }
    if ((fp = _popen(cmd, "r")) == NULL)
    {
        return -2;
    }
    else
    {
        memset(MsgBuff, 0, MsgLen);

        //读取命令执行过程中的输出
        while (fgets(MsgBuff, MsgLen, fp) != NULL)
        {
            printf("MsgBuff: %s\n", MsgBuff);
        }

        //关闭执行的进程
        if(_pclose(fp) == -1)
        {
            return -3;
        }
    }
    return 0;
}

int main()
{
    //const char *cmd = "ffmpeg -i D:\\123.mp4 -vf reverse D:\\out\\out1.mp4";
    
    const char *cmd = "ping www.baidu.com";
    int ret = 0;
    ret = run_cmd(cmd);
    printf("命令执行结果:%d\r\n",ret);

    getchar();
    return 0;
}
一派掌门 二十级
2楼 发表于:2026-5-6 17:09
 
一派掌门 二十级
3楼 发表于:2026-5-6 17:21
#include <stdio.h>
#include <string.h>

int run_cmd(const char *cmd)
{
    char buffer[1024];
    int ret;
    FILE *fp;

    fp = _popen(cmd, "r");
    if (fp == NULL)
        return -1;
    while (fgets(buffer, sizeof(buffer), fp))
        printf("接收到:%s", buffer);
    ret = _pclose(fp);
    printf("进程返回值:%d\n", ret);
    return ret;
}

int main()
{
    run_cmd("D:\\Downloads\\TBD_release\\config\\Cmd_download_tool.exe 1 14 1 000000 4 0C");
    run_cmd("cd xxxxx");
    return 0;
}


【程序运行结果】

接收到:
接收到: [17:19:43]:
接收到: TC32 EVK: Swire ok
接收到: flash mid = 0x001360c8, flash status = 0x0018, lock area: 0x00000000-0x
0003ffff
接收到: flash uid: 31 30 36 36 34 13 21 e7 43 31 ff ff ff ff ff ff
接收到: Total time: 3578 ms
进程返回值:0
系统找不到指定的路径。
进程返回值:1
请按任意键继续. . .

 

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:16 回复数:2
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2026-5-6 17:21
 
©2010-2026 Purasbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。