得到c++程序Process ID [getpid()], 调高CPU优先级 [renice]

article/2025/10/3 21:24:23

1. 得到进程ID - pid

#include <unistd.h> int pid = (int)getpid();std::cout<<"pid: "<<getpid()<<"\n";

C++ 打印pid和tid_shuai_wow的博客-CSDN博客_c++ 打印pid获取pid1. 包含头文件#include <unistd.h>2. 在需要打印pid的地方加入std::cout << "pid = " << getpid() << std::endl;获取tid1. 包含头文件#include <thread>2. 在需要打印tid的地方加入std::co...https://blog.csdn.net/u013431916/article/details/90033208

[check result]

Terminal 输出pid结果

htop 输出中对应程序的pid一致 

 

2. 根据pid, 通过renice指令调高CPU优先级

//PART I Run Terminal CMD in cpp  ref: https://zhuanlan.zhihu.com/p/351712885
using namespace std;
#define CMD_RESULT_BUF_SIZE 1024/** cmd:待执行命令* result:命令输出结果* 函数返回:0 成功;-1 失败;*/
int ExecuteCMD(const char *cmd, char *result)
{int iRet = -1;char buf_ps[CMD_RESULT_BUF_SIZE];char ps[CMD_RESULT_BUF_SIZE] = {0};FILE *ptr;strcpy(ps, cmd);if((ptr = popen(ps, "r")) != NULL){while(fgets(buf_ps, sizeof(buf_ps), ptr) != NULL){strcat(result, buf_ps);if(strlen(result) > CMD_RESULT_BUF_SIZE){break;}}pclose(ptr);ptr = NULL;iRet = 0;  // 处理成功}else{printf("popen %s error\n", ps);iRet = -1; // 处理失败}return iRet;
}
/** 输入: 执行命令* 输出: 命令执行结果字符串*/
__inline std::string SystemWithResult(const char *cmd)
{char cBuf[CMD_RESULT_BUF_SIZE] = {0};string sCmdResult;ExecuteCMD(cmd, cBuf);sCmdResult = string(cBuf); // char * 转换为 string 类型printf("CMD Result: \n%s\n", sCmdResult.c_str());return sCmdResult;
}//PART II Run Terminal CMD in cpp  ref: https://zhuanlan.zhihu.com/p/351712885int pid = (int)getpid();
string cpu_priority_up_cmd = "sudo renice -20 "; //priority range: 19 (lowest) ~ -20 (highest)
cpu_priority_up_cmd += to_string(pid);
cpu_priority_up_cmd += " -u ningxi root";
ROS_INFO_STREAM("pid = " << getpid()<<"). Run: "<<cpu_priority_up_cmd<<endl);
SystemWithResult(cpu_priority_up_cmd.data());

 

https://linux.die.net/man/2/setpriorityThe scheduling priority of the process, process group, or user, as indicated by which and who is obtained with the getpriority() call and set with the setpriority() call.https://linux.die.net/man/2/setprioritygetpriority(2) - Linux man pageThe getpriority() call returns the highest priority (lowest numerical value) enjoyed by any of the specified processes. The setpriority() call sets the ...https://linux.die.net/man/2/getpriority

[check result]

如下则成功更改了 CPU优先级 

测试环境:ubuntu18.04


http://chatgpt.dhexx.cn/article/N823Sevo.shtml

相关文章

RN(React Native)

RN是React的原生组件库 网址:React Native 中文网 使用React来编写原生应用的框架 一、ReactNative开发环境的搭建 在本机搭建RN项目开发运行环境 —— 3GB ①安装必需的编译软件&#xff1a;Node.js JDK ②安装Android原生App开发软件 —— Android Studio ③使用Android开…

优化Linux系统性能的必杀技:调整进程优先级!学会使用nice命令,让你的系统飞一般的顺畅!

文章目录 前言一. nice命令介绍1.1 nice的介绍1.2 cpu资源的调度1.3 nice是控制内核吗&#xff1f; 二. 语法格式及常用选项三. 参考案例3.1 将ls命令的优先级调整为最高3.2 将 find 命令的优先级调整为最低3.3 如何查看nice值 四. nice和renice的区别总结 前言 大家好&#x…

Linux nice及renice命令使用

Linux nice及renice命令使用 引言: linux内核是一个了不起的马戏表演者,它在进程和系统资源之间小心地玩着杂耍,并保持系统的正常运转。同时,内核也很公平,它将资源公平地分配给各个进程。但是,如果用户需要给一个重要进程提高优先级、或是降低优先级,该怎么办呢?答案是…

Linux进程监测和操控之top、ps、kill、nice、renice命令

文章目录 1、概述2、动态监测进程信息&#xff1a;top命令2.1、Linux系统的整体情况2.2、Linux进程的情况2.3、监控指定进程 3、静态查看进程信息&#xff1a;ps命令3.1、查看进程的资源占用3.2、查看父进程ID3.3、查看指定进程的内存占用 4、结束进程5、进程优先级5.1、启动程…

linux的nice 命令和renice命令

二者没有太大的区别&#xff0c;都是用于改变进程的优先级&#xff0c;所谓的优先级就是谁有更大的机会先执行&#xff0c;那么为什么要有nice这个命令呢&#xff1f;nice”是指“niceness”&#xff0c;即友善度&#xff0c;所以这个值越小的话&#xff0c;比如-10&#xff0c…

Linux 中的 renice 命令详解及C/C++代码实现

Linux 中的 nice 命令有助于执行具有修改的调度优先级的程序/进程。 它启动具有用户定义的调度优先级的进程。 如果我们给一个进程更高的优先级&#xff0c;那么内核会为这个进程分配更多的 CPU 时间。 而 renice 命令允许您更改和修改已运行进程的调度优先级。 什么是进程 …

Java之throw和throws的区别

throw和throws的区别 共同点区别总结 共同点 两者在抛出异常时&#xff0c;抛出异常的方法并不负责处理&#xff0c;顾名思义&#xff0c;只管抛出&#xff0c;由调用者负责处理。 区别 &#xff08;1&#xff09;throws用于方法头&#xff0c;表示的只是异常的申明&#xf…

Throw和Throws详解

Throw和Throws详解 ​ 1.throw是什么&#xff1f;有什么用&#xff1f; ​ throw是java中关于异常的一种操作&#xff0c;如果在try{}catch{}中使用了throw&#xff0c;就代表自己书写的这个方法&#xff0c;可以自己 处理异常了&#xff0c;就是抛出的一个动作&#xff0c;可…

Java异常:throw 和 throws的区别

throws&#xff1a;用来声明一个方法可能抛出和所有异常的信息&#xff0c;表现出现异常的可能性&#xff0c;但并不一定会发生异常。&#xff08;可以理解为为了预防异常的出现&#xff0c;而用throws提前声明一下&#xff09; throw&#xff1a;指抛出的一个具体的异常类型&…

Throws和Throw的区别?

在初学Java异常时&#xff0c;总是被throws和throw搞晕&#xff0c;今天来理一下它们之间的关系。 1、throws 方法名后面跟上 throws Exception 证明这个方法里的语句可能会发生异常&#xff0c;注意是可能&#xff01;在别处如果调用这个方法时&#xff0c;就必须也抛出异常…

再探java基础——throw与throws

再探java基础——throw与throws 以前虽然知道一些异常的处理&#xff0c;也用过一些&#xff0c;但是对throw和throws区别还是有不太清楚。今天用实例测试一下。 异常处理机制 异常处理是对可能出现的异常进行处理&#xff0c;以防止程序遇到异常时被卡死&#xff0c;处于一…

try catch 和throw以及throws的使用

转载&#xff1a;https://www.cnblogs.com/zhangdaicong/p/6127984.html try-catch和throw,throws的区别 java里的异常多种多样&#xff0c;这是一种非常有用的机制&#xff0c;它能帮助我们处理那些我们未知的错误&#xff0c;在java里&#xff0c;关于异常的有throw throws…

Java异常之throw,throws和Throwable

Java异常处理中有throw开头的三兄弟&#xff0c;分别是throw,throws以及Throwable&#xff0c;那么他们之间到底怎么区分呢&#xff0c;且听我慢慢道来。 Throwable Throwable是一个类&#xff0c;该类被异常类Exception以及错误类Error继承&#xff0c;其主要结构如下&#…

Java throws 使用

在开发中&#xff0c;如果去调用别人写的方法时&#xff0c;是否能知道别人写的方法是否会发生异常&#xff1f;这是很难判断的。针对这种情况&#xff0c;Java总允许在方法的后面使用throws关键字对外声明该方法有可能发生异常&#xff0c;这样调用者在调用方法时&#xff0c;…

【JavaSE】throws 异常处理

文章目录 1. 基本介绍2. 快速入门案例3. 注意事项和使用细节 1. 基本介绍 如果一个方法(中的语句执行时)可能生成某种异常&#xff0c;但是并不能确定如何处理这种异常&#xff0c;则此方法应显示地声明抛出异常&#xff0c;表明该方法将不对这些异常进行处理&#xff0c;而由…

throws异常

在程序开发过程中&#xff0c;程序员会尽量避免错误的发生&#xff0c;但是总会发生一些不可预测的事情&#xff0c;例如除法运算时除数为0 、内存不足、栈溢出等&#xff0c;这些就是异常&#xff0c;java语言提供了异常的处理机制&#xff0c;处理一些不可预期的事情。 使用t…

Elasticsearch之利用bulk提高写入性能(含源码分析)

什么是bulk操作 bulk是批量的意思&#xff0c;也就是把原来单个的操作打包好&#xff0c;通过批量的api提交到ES集群。下面是个示例&#xff1a; 单个操作&#xff1a; PUT my-index-000001/_doc/1 {"timestamp": "2099-11-15T13:12:00","message&…

.NET5必备工具——EF大数据批量处理----Bulk系列

之前做项目的时候&#xff0c;如果在大批量操作数据时,性能不好.因为在框架中使用了EntityFramework&#xff0c;于是就搜索到某著名插件,Z系列。 1.安装 然后在类里面添加引用之后,使用DbContext就可以直接点出来。 2.博客园有人做过对比试验 我们直接拿数据说话吧. EF传统…

初识ElasticSearch(5) -批量操作之bulk | 条件查询 | 其它查询

1. bulk&#xff1a;1.1. bulk语法&#xff1a;1.2. bulk行为-增删改&#xff1a; 2. bulk-index批量插入&#xff1a;3. bulk-update批量修改&#xff1a;4. bulk-delete批量删除&#xff1a;5. _update_by_query条件更新&#xff1a;6. _delete_by_query条件删除&#xff1a;…

mysql bulkupdate_Bulk Upsert for MySQL PostgreSQL

什么是 Upsert "UPSERT" is a DBMS feature that allows a DML statements author to atomically either insert a row, or on the basis of the row already existing, UPDATE that existing row instead, while safely giving little to no further thought to con…