不想融化的冰 2022-04-28 22:53 采纳率: 100%
浏览 146
已结题

如何用c++用程序运行另一个c++程序或可执行文件

如何用c++用程序运行另一个c++程序或可执行文件,即是用c++运行另一个程序(的可执行文件)?

  • 写回答

3条回答 默认 最新

  • 飞翔的蚯蚓 2022-04-28 23:23
    关注

    比如你可以使用popen()调用其他可执行文件或者脚本。

    #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, "./test");
        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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 大米粥哥哥 2022-04-28 23:15
    关注

    百度 c++调用外部exe程序

    评论
  • bostonAlen 2022-04-28 23:29
    关注

    程序中调用cmd
    或者调用winApi创建进程

    #include <stdio.h>
    #include <Windows.h>
    
    int main(int argc, char * argv[])
    {
        //TCHAR commandLine[] = TEXT("C:\\Users\\Administrator\\source\\repos\\c++practice\\c\\test.exe");
        TCHAR commandLine[] = TEXT("notepad");
        STARTUPINFO si = { sizeof(si) };
        PROCESS_INFORMATION pi;
        bool bRet = CreateProcess(
            NULL,
            commandLine,
            NULL,
            NULL,
            FALSE,
            CREATE_NO_WINDOW,
            NULL,
            NULL,
            &si,
            &pi);
        int error = GetLastError();
        if (bRet)
        {
            CloseHandle(pi.hThread);
            CloseHandle(pi.hProcess);
    
            printf("进程ID:%d\n", pi.dwProcessId);
            printf("线程ID:%d\n", pi.dwThreadId);
        }
        system("pause");
        return 0;
    }
    
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月22日
  • 已采纳回答 5月14日
  • 创建了问题 4月28日

悬赏问题

  • ¥15 Java环境配了,但启用不成功。
  • ¥15 求一个智能家居控制的代码
  • ¥15 ad软件 pcb布线pcb规则约束编辑器where the object matpcb布线pcb规则约束编辑器where the object matchs怎么没有+15v只有no net
  • ¥15 虚拟机vmnet8 nat模式可以ping通主机,主机也能ping通虚拟机,但是vmnet8一直未识别怎么解决,其次诊断结果就是默认网关不可用
  • ¥20 求各位能用我能理解的话回答超级简单的一些问题
  • ¥15 yolov5双目识别输出坐标代码报错
  • ¥15 这个代码有什么语法错误
  • ¥15 给予STM32按键中断与串口通信
  • ¥15 使用QT实现can通信
  • ¥15 关于sp验证的一些东西,求告知如何解决,