C++popen用法

开发过程中,为了在一段C++代码中调用另一个C++写的可执行文件,并需要获取可执行文件的返回值,根据返回值进行校验。开发过程当中,发现可执行文件的返回值不太方便获取,于是改成获取可执行文件的打印结果,根据打印结果进行判定,这里用到了popen。

 

popen:

popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数。pclose() 函数关闭标准 I/O 流,等待命令执行结束,然后返回 shell 的终止状态。如果 shell 不能被执行,则 pclose() 返回的终止状态与 shell 已执行 exit 一样。

FILE * popen ( const char * command , const char * type );
int pclose ( FILE * stream );

利用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;
}

 

 

### 如何在VSCode调试Python代码 #### 设置Python解释器 为了确保能够在Visual Studio Code (VSCode) 中顺利运行和调试Python程序,首先要设置好Python解释器。这可以通过安装并配置Python插件来完成[^3]。 ```json "python.pythonPath": "C:/Users/Sanghun/AppData/Local/Programs/Python/Python35-32/python.exe" ``` 此路径应指向本地计算机上已安装的Python版本位置[^4]。 #### 启动调试会话 一旦选择了合适的解释器之后,就可以准备启动调试过程了。对于简单的Python脚本来说,在想要打断点的地方点击左侧边栏即可设置断点;随后按F5键或通过顶部菜单选择`Start Debugging`选项开始调试流程[^1]。 如果遇到混合有C++编写的扩展库的情况,则可能需要用到更高级别的工具链如LLDB来进行联合调试操作。 #### 使用IPython Kernel增强体验 除了标准的调试功能外,还可以利用IPython内核带来的交互式开发环境(IDE),它提供了更加丰富的特性集以及更好的用户体验,特别是在处理数据科学相关任务时尤为有用[^2]。 #### 自定义launch.json文件 为了让调试工作更为高效便捷,建议编辑`.vscode/launch.json` 文件来自定义一些常用调试配置项。下面是一个基本的例子: ```json { "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal" } ] } ``` 这段JSON片段定义了一个名为“Python: Current File”的调试方案,当按下F5执行该配置时将会直接对当前打开的源码文件发起一次新的调试请求。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值