【问题标题】:C++ Execute a command line and get Result.C++ 执行命令行并获取结果。
【发布时间】:2016-03-21 05:04:41
【问题描述】:

我需要一些帮助来解决我的情况。我想执行一个终端并获得结果。到目前为止我已经完成了,但我想在得到结果后执行一些其他命令。我的问题是,每次我执行命令时,控制台都会重新启动,我不知道如何在活动进程中编写。

我是这样做的:

FILE *fp = popen(r.c_str(),"r");
    char buf[2560];

    while (fgets(buf, 2560, fp))
    {
        s->SendLine(buf);
    }
    fclose(fp);

我想在同一进程中“发送”另一个命令。我该怎么做?

【问题讨论】:

  • 您是说您在控制台中执行了一些操作,然后程序结束但您希望它继续执行更多命令?
  • 什么是“终端”?结果是什么”?什么是“其他命令”?

标签: c++ cmd command line popen


【解决方案1】:

假设我理解您的问题和评论。听起来您希望程序循环运行,直到用户选择关闭它。你会想要这样的东西:

bool keepProgramOpen = true;
public void main()
{       
    while(keepProgramOpen)
    {
        printf("Choose and option\n");
        printf("Option 1: press 1\n");
        printf("Option 2: press 2\n"); //etc
        char result = getchar();

        switch result
        {
            //code to select which option was picked
            case 1:
                fileFunction();
                break;
            case 2:
                someOtherFunction();
                break;
            case 3:
                closeProgram(); //set keepProgramOpen false in here to end program
                break;
            //etc
        }
    }
}

fileFunction()
{
   FILE *fp = popen(r.c_str(),"r");
   char buf[2560];

   while (fgets(buf, 2560, fp))
   {
       s->SendLine(buf);
   }
   fclose(fp);
}

【讨论】:

  • 并非如此,它应该留在一个进程中。例子。当 R 为 ="dir" 时,它会显示正确的路径。 next R 可以是 ="cd .." 但它不会影响下一个命令...希望你能理解 :$
  • 你说的是调用程序时输入的命令行参数,还是程序启动后输入的参数。您可能需要重新表述您的问题并包含更多代码。
【解决方案2】:

我认为在fclose(fp) 之前使用r2

fputs(r2.c_str(),fp)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-03
    • 2014-07-09
    • 2010-09-17
    • 2013-03-27
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    相关资源
    最近更新 更多