首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用boost从pid获取“二进制文件”/“可执行文件”的路径?

使用boost库从pid获取“二进制文件”/“可执行文件”的路径,可以使用boost::process::child类的get_executable_path()方法。

具体步骤如下:

  1. 首先,引入boost库,并包含相关头文件:
代码语言:txt
复制
#include <boost/process.hpp>
  1. 定义一个函数,该函数将根据给定的pid获取二进制文件路径,并返回结果:
代码语言:txt
复制
std::string getExecutablePathFromPid(boost::process::pid_t pid) {
    std::string executablePath;

    try {
        // 创建一个boost::process::child对象,用于获取进程信息
        boost::process::child process(boost::process::search_path("pidof"), std::to_string(pid));

        // 通过调用get_executable_path()方法获取二进制文件路径
        executablePath = process.get_executable_path().string();

        // 关闭子进程
        process.wait();
    } catch (const boost::process::process_error& e) {
        // 处理异常情况
        // 可以打印错误信息或者抛出异常
    }

    return executablePath;
}
  1. 在代码中调用该函数,并传入需要查询的pid:
代码语言:txt
复制
boost::process::pid_t pid = <需要查询的pid>;
std::string path = getExecutablePathFromPid(pid);

std::cout << "Executable path: " << path << std::endl;

以上代码使用boost库中的boost::process::child类的get_executable_path()方法来获取给定pid对应的二进制文件路径。需要注意的是,此方法可能不适用于所有操作系统和编译环境,具体取决于boost库的版本和配置。

关于boost库的更多信息,请参考腾讯云相关产品和产品介绍链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Go二进制文件获取其依赖模块信息

使用 ELF 文件格式可执行文件是由 ELF 头(ELF Header) 开始,后跟 程序头(Program Header) 或 节头(Section Header) 或两者均有组成。...具体实现 在前面的内容中,关于如何使用 readelf 和 objdump 命令获取二进制文件 Go 版本和 Module 信息就已经涉及到了其具体原理。这里我来介绍下 Go 代码实现。...mod = mod[16 : len(mod)-16] } else { mod = "" } 总结 我在这篇文章中分享了如何 Go 二进制文件获取构建它时所用 Go 版本及它依赖模块信息...如果对原理不感兴趣的话,直接通过 go version -m 二进制文件 即可获取相关信息。...另外,你可能会好奇 Go 二进制文件获取这些信息有什么作用。

2.6K10
  • 使用字符串操作来获取图片路径文件

    path.lastIndexOf('/') + 1); console.log(fileName); // 输出 "12.png" 代码使用了字符串操作来获取路径文件名...const fileName = path.substring(path.lastIndexOf('/') + 1); 使用了字符串substring和lastIndexOf方法来获取路径文件名。...+1:将最后一个斜杠索引位置加1,以获取文件起始位置。 path.substring(...):substring方法截取字符串中指定范围部分。...在这里,它使用起始位置作为参数,截取斜杠后面的部分,并将结果赋值给变量fileName。...根据你提供代码和路径,fileName将被赋值为"12.png",并通过console.log输出。它提取了路径中最后一个斜杠后面的部分,即文件名。

    25820

    cmake使用

    }:本CMakeLists.txt所在文件路径 # ${PROJECT_NAME}:本CMakeLists.txtproject名称 project(xxx) # 获取路径下所有的.cpp/.c.../.cc文件,并赋值给变量中 aux_source_directory(路径 变量) # 给文件名/路径名或其他字符串起别名,用${变量}获取变量内容 set(变量 文件名/路径/...c/.cc文件生成可执行文件 add_executable(可执行文件名称 文件) # 规定.h头文件路径 include_directories(路径) # 规定.so/.a库文件路径 link_directories...boost_thread pthread) 环境变量 使用环境变量 $ENV{Name} 写入环境变量 set(ENV{Name} value) # 这里没有“$”符号 预定义变量...重新定义目标二进制可执行文件存放位置 LIBRARY_OUTPUT_PATH 重新定义目标链接库文件存放位置 参考 CMakeLists.txt超傻瓜手把手教程(附实例源码) CMakeLists.txt

    2K30

    Linux进程启动过程分析do_execve(可执行程序加载和运行)---Linux进程管理与调度(十一)

    它自最早在 System V 系统上出现后,被 UNIX 世界所广泛接受,作为缺省二进制文件格式来使用。...sys_execve接受参数:1.可执行文件路径 2.命令行参数字符串 3.环境变量字符串 sys_execve是调用do_execve实现。...结构体 调用open_exec()查找并打开二进制文件 调用sched_exec()找到最小负载CPU,用来执行该二进制文件 根据获取信息,填充struct linux_binprm结构体中file...()读取二进制文件头128字节(这些字节用于识别二进制文件格式及其他信息,后续会使用到) 调用copy_strings_kernel()内核空间获取二进制文件路径名称 调用copy_string...if (retval < 0) goto out; // 9、调用copy_strings_kernel()内核空间获取二进制文件路径名称; retval

    4K31

    小白学习MySQL - 数据库软件和初始化安装

    Linux下安装可以分成几类,rpm安装、源码安装、二进制安装, 1. rpm安装,可能很简单,直接执行rpm指令,即可完成安装,但是这种安装,不是很灵活,例如不能改动安装路径。 2..../configure --prefix=/opt/software/cmake gmake make install 5.7开始,安装数据库时,需要使用boost,下载boost_1_59_0.tar.gz...三、二进制安装 介质下载,MySQL 5.7,我们选择当前最高5.7.32,指定RHEL7平台,下载gz文件文件名为mysql-5.7.32-el7-x86_64.tar.gz, ? ?...可以创建软链接,模拟存在, ln -s /mysql/3306/tmp/mysql.sock /tmp/mysql.sock 初始登录数据库,需要使用密码,5.7开始,初始化密码,可以日志mysql-error.log...MySQL 8.0二进制安装和上述5.7基本一致,只是相关路径,需要改下名称,例如, 数据库软件路径,/usr/local/mysql8 数据库路径,/mysql/3307 因为一台机器上,有多个数据库

    2.2K50

    dotnet C# 使用 Win32 函数获取用户下载文件路径方法

    大家都知道,在 dotnet 里面的可以使用 Environment.GetFolderPath 方法配合 Environment.SpecialFolder 枚举列出当前运行环境下一些特殊文件夹。...然而 SpecialFolder 枚举不包含对 Download 下载文件枚举值,如咱需要获取用户当前下载文件夹,需要使用 Win32 方法来辅助获取 在 dotnet 官方,已经有人提议给 SpecialFolder...先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文代码 git init git remote add origin https://gitee.com.../lindexi/lindexi_gd.git git pull origin 7980a73b687c430486843b81596689f809b7add0 以上使用是 gitee 源,如果 gitee...,进入 HebeefeacuLurnaheehaja 文件夹,即可获取到源代码

    17910

    c比python快多少倍_python和c++哪个简单

    按下面步骤安装编译Boost::Python 下载最新boost_1_79_0.zip并解压到本地目录 运行bootstrap.bat在目录下产生b2.exe可执行文件 进入根目录新建user-config.jam...toolset版本,具体对应关系如下: python则定义了本地使用python解释器相关路径和库 命令行执行自动化安装: b2 --with-python install --prefix=...,缺省则为全部编译 stage | install:前者表示只生成库文件(.dll与.lib),后者会额外生成include目录包含库文件对应文件,推荐使用stage,因为安装完成后根目录下boost...与include目录文件完全一致,可直接作为头文件使用,节省编译时间 stagedir | prefix:表示编译生成文件路径,前者对应stage安装模式,后者对应install安装模式。...address-model:指定编译版本,可选32 | 64,该参数必须和本地安装Python位数相对应,否则会编译出错 user-config:使用本地用户配置文件路径 补充一下编译库文件命名格式

    1.9K30

    linux中lamp架构搭建_docker搭建redis集群

    perl 依赖 gcc:C语言编译器 gcc-c++:C++编译器 make:源代码编译器(源代码转换二进制文件) pcre:pcre是一个perl函数库,包括perl兼容正则表达式库 pcre-devel...#-j 2 意思是使用双核同时编译,效率会更快一些 我们可以做软链接将httpd服务可执行程序文件放入环境变量目录中,便于系统识别,优化配置文件路径。...#指定配置文件存储路径 -DSYSTEMD_PID_DIR=/usr/local/mysql \ #指定进程文件存储路径 -DDEFAULT_CHARSET=utf8 \...-DWITH_BOOST=/usr/local/boost \ #指定boost路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost -DWITH_SYSTEMD...#设置服务器字符集编码格式为utf8 pid-file = /usr/local/mysql/mysqld.pid #指定pid 进程文件路径 socket=/usr/local/mysql/mysql.sock

    1.6K20

    Prometheus Process-exporter 监控进程状态

    模板变量 {{.Comm}}包含原始可执行文件名称,第二个字段/proc//stat {{.ExeBase}}包含可执行文件基本名称 {{.ExeFull}}包含可执行文件路径 {{....Username}}包含有效用户用户名 {{.Matches}}映射包含应用 cmdline 正则表达式产生匹配项 {{.PID}}包含进程 PID。...使用 PID 意味着该组将只包含一个进程。 {{.StartTime}}包含进程开始时间。...获取/proc/[pid]/io 进程读取字节数 namedprocess_namegroup_read_bytes_total 获取/proc/[pid]/io 进程写入字节数 namedprocess_namegroup_write_bytes_total...获取进程使用内存字节数 namedprocess_namegroup_memory_bytes 获取进程使用文件描述符数量 namedprocess_namegroup_open_filedesc

    5.5K20

    conan入门(十六):profile template功能实现不同平台下profile统一

    《conan入门(十一):Linux下Android NDK交叉编译Boost》中介绍了在Linux和Windows下NDK交叉编译boost过程 在这两篇博客中针对Linux和Windows平台我定义了不同...profile文件,因为Linux和Windows路径换行符不同,而且Linux和Windows下clang编译器可执行文件后缀也不同(Windows下为.cmd)。...有的,这就要用到Conan profile文件支持模板功能(template)–《Profile templates》 Conan 1.38 开始,可以使用jinja2模板引擎进行配置文件。...通过使用.jinja扩展名命名配置文件来启用此功能。当conan加载带有.jinja扩展名配置文件时,立即解析并渲染模板生成标准profile。...jinja2支持基本if-else条件判断以及字符操作,也就是说可以完全使用jinja2语法改造动态生成适应当前平台profile 所以代价就是要学会使用jinja2模板 在网上找到了jinja2模板使用文档

    70020

    CentOS7.2安装Mysql5.7.13

    2、安装依赖包(注: 相关依赖包作用) cmake:由于 MySQL5.5 版本开始弃用了常规 configure 编译方法,所以需要 CMake 编译器,用于设置 mysql 编译参数。...Boost #MySQL 5.7.5 开始 Boost 库是必需,mysql源码中用到了 C++ Boost 库,要求必须安装 boost1.59.0 或以上版本 GCC 是Linux 下 C...在 mysqld.service,把默认 pid 文件指定到了/var/run/mysqld/目录,而并没有事先建立该目录,因此要手动建立该目录并把权限赋给 mysql 用户。 ?...设置数据库管理员用户 root 密码 ? 三、二进制安装mysql5.7 上面已经说过了mysql编译安装,二进制安装和编译安装差不多,只是不用自己编译了,这里就简单过一下步骤。...4、将mysql目录属主和属组改为mysql并查看 ? 5、优化mysql执行路径 ? Source /etc/profile 6、编写mysql配置文件/etc/my.cnf ?

    1.2K20

    运维之LNMP环境安装与配置

    ,完全免费使用,由Fedora项目维护,所以如果你使用是RHEL,或者CentOS,Scientific等RHEL系linux,可以非常放心使用EPELyum源。...编译包依赖 描述:MySQL 5.7.5版本开始依赖于Boost C++库,我们在安装编译时候需要指定boost目录路径-DWITH_BOOST=/opt/mysql-8.0.15/boost/,...2.安装编译时候不建议使用 make -j 4 ,虽然安装快但是可能影响程序完整性; 3.如果想修改MySQL版本号文件,实际不建议进行修改include/mysql_version.h.in.../usr/且没有进行error 与 pid file文件默认路径 /usr/local/php/7.4.3/var/log/php-fpm.log /usr/local/php/7.4.3/var/run.../php-fpm.pid #2.我们采用Systemctl管理方式进行启动,由于Systemctl有一个ProtectSystem参数,描述中我们可以知道 /usr, /boot, and /etc

    82220

    GDB入门教程之如何使用GDB启动调试

    要使得 C 和 C++ 程序能在 GDB 下正常进行调试,必须在程序编译期间把基本调试信息(如变量名、函数名、函数调用堆栈等)添加到可执行文件中。...当使用GDB加载不包含调试信息二进制文件或进程时,GDB终端会提示错误信息:"no debugging symbols found"。...一、GDB调试未执行程序 对于本地某个二进制文件 demo ( GDB 也支持远程调试),若其启动时不需要命令行参数,则可以在shell下使用命令 gdb demo 进入 GDB,并输入 run (缩写形式...获取到待调试目标进程号后 (假设为 pid ),可以使用 gdb 命令进入 GDB 终端,并使用 attach pid 方式启动对当前正在运行 demo 进程 GDB 调试。...可通过 ulimit-c 查看和指定 core 文件大小,通过修改 /proc/sys/kernel/core_pattern 文件可指定 core 文件保存在本地磁盘中路径文件名格式。

    4.3K10

    C++服务编译耗时优化原理及实践

    gcc -c选项可以得到汇编后结果文件,扩展名为.o。 .o文件,是按照二进制编码方式生成文件。 链接器:生成可执行文件或库文件。...可执行文件:将所有的二进制文件链接起来融合成一个可执行程序,不管这些文件是目标二进制文件还是库二进制文件。 2.2 C++编译特点 1....如果头文件中有模板(STL/Boost),则该模板在每个cpp文件使用时都会做一次实例化,N个源文件std::vector会实例化N次。 3....,我们重点优化了这类文件,通过工具编译展开,找出了Boost使用、模板类展开、Thrift头文件展开等共性问题,并针对这些问题做专门优化。...替换BoostBoost是一个广泛使用基础库,涵盖了大量常用函数,十分方便、好用,然而也存在一些不足之处。

    1.9K20

    nodejs process进程

    它是一个数组,第一个元素是Node.js可执行文件路径,第二个元素是当前执行JavaScript文件路径,后面的元素是传递给脚本命令行参数。...process.cwd():获取当前工作目录路径。 process.exit([code]):退出当前进程,可选地指定一个退出码。默认退出码是0,表示正常退出。...process.pid获取当前进程PID(进程ID)。 process.platform:获取当前操作系统平台。...process.memoryUsage():获取当前进程内存使用情况。返回一个包含heapTotal(堆总大小)、heapUsed(堆已使用大小)、rss(常驻集大小)等属性对象。...// external : 外部分内存 c或者 c++ 使用 // arrayBuffer : 二进制总量 console.log(process.memoryUsage()); // 退出进程

    8610

    Linux进程编程

    按下ESC键退出编辑模式,输入“:wq”回到命令行,使用gcc编译器编译forkProcess.c文件生成可执行文件forkProcess. 输入....如下图所示: 3.2 exec系统调用 3.2.1 exec函数族作用 exec函数族作用是根据指定文件名找到可执行文件,并用它来取代调用进程内容,换句话说,就是在调用进程内部执行一个可执行文件...这里可执行文件既可以是二进制文件,也可以是任何Linux下可执行脚本文件。...参数: ​ path:可执行文件路径名字; ​ arg:可执行程序所带参数,第一个参数为可执行文件名字,没有带路径且arg必须以NULL结束; ​ file:如果参数file中包含/,就将其视为路径名...六个函数区别: 查找方式不同:前四个函数查找方式都是完整文件目录路径,而后两个(以p结尾两个函数)可以只给出文件名,系统会自动环境变量“$PATH”所指路径中进行查找; 参数传递方式不同

    7.8K20

    使用lamp搭建博客_php laravel框架

    gcc-c++ \ #C++ 编译器 make \ #源代码编译器(源代码转换成二进制文件) pcre \ #pcre 是一个 perl 函数库,包括 perl 兼容正则表达式库...#指定配置文件存储路径 -DSYSTEMD_PID_DIR=/usr/local/mysql \ #指定进程文件存储路径 -DDEFAULT_CHARSET=utf8 \...-DWITH_BOOST=/usr/local/boost \ #指定boost路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost -DWITH_SYSTEMD...#设置服务器字符集编码格式为utf8 pid-file = /usr/local/mysql/mysqld.pid #指定pid 进程文件路径 socket=/usr/local/mysql/mysql.sock...PHP 主配置文件,并进行修改 #在测试环境时使用 php.ini-development 文件,而在生产环境时使用 php.ini-production 文件 cp /opt/php-7.1.10

    1.1K20
    领券