目前共有3篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:不轉換▼
 
點擊 回復
6 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)
 

本帖信息

點擊數:6 回複數:2
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2026-5-6 17:21
 
©2010-2026 Purasbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。