設置 | 登錄 | 註冊

目前共有3篇帖子。

【转载】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
https://cloud.tencent.com/developer/article/2011681
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
请按任意键继续. . .

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張