sdbusplus:通过connect调用new_method_call完成同步调用service的method
创始人
2025-05-29 14:08:11
sdbusplus:通过new_method_call同步调用service的method_风静如云的博客-CSDN博客

完成了通过bus的new_method_call方法同步调用service的method

sdbusplus还可以通过connect的new_method_call方法完成同步调用service的method的方式:

//sync_call.cpp
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include using namespace std;
using namespace sdbusplus;void syncCallMethod()
{using return_type = vector>;boost::asio::io_context io;auto b = bus::new_default_system();auto conn = make_shared(io, bus::details::bus_friend::get_busp(b));auto methodCall = conn->new_method_call("org.freedesktop.login1", "/org/freedesktop/login1","org.freedesktop.login1.Manager", "ListUsers");auto reply  = conn->call(methodCall);return_type users;reply.read(users);for (auto& user : users){cout << get(user) << "\n";}
}int main()
{syncCallMethod();return 0;
}
编译程序:
g++ -o sync_call sync_call.cpp -lsdbusplus -lsystemd
在ubuntu上运行,可以输出当前系统里的用户列表

同样需要注意的是:根据需要创建系统总线或用户总线的对象,参照:

//sync_call.cpp
#include 
#include 
#include 
#include 
#include using namespace std;
using namespace sdbusplus;void syncCallMethod()
{boost::asio::io_context io;auto b = bus::new_default_user();auto conn = make_shared(io, bus::details::bus_friend::get_busp(b));auto methodCall = conn->new_method_call("calculate.service", "/calculate_obj","calculate_infterface.data", "AddInt");methodCall.append(1, 2);auto reply  = conn->call(methodCall);int res = 0;reply.read(res);cout<<"res:"<
需要使用的service:
sdbusplus:添加service_风静如云的博客-CSDN博客
编译程序:
g++ -o sync_call sync_call.cpp -lsdbusplus -lsystemd

methodCall.append(1, 2); 用于添加method的参数
也可以调用多次:
methodCall.append(1);
methodCall.append(2);

运行程序:
res:3

相关内容

热门资讯

Redis学习笔记 ---- ... 常见的有五种:String(字符串),Has...
Java实现十类排序算法对比展... Java实现排序算法 本代码展示了Java中常见的十种排序算法,并对每种算法的时间复杂...
SC8P1762E_汇编指令一... 控制类 NOP, 空操作 STOP, 进入休眠模式 CLR...
微信小程序实现图片上传(清晰版... 在wxml文件中添加一个按钮和一个image标签用于显示上传的图片 选择图片 在js文件中添加选择...
Maven打包子模块 项目结构1. project_01: 一个多模块的maven工程2. module_01: 工程pr...
Scala安装及设置查看源代码 文章目录一、安装Scala环境1.1、下载Scala1.2、配置scala环境变量1.3、测试是否安...
使用大规模数据注释和深度学习对... 使用大规模数据注释和深度学习对具有人类水平性能的组织图像进行全细胞分割摘要绪论Mesmer2.1Me...
【数据结构】TreeMap和T... 目录 1、TreeMap 1.1 TreeMap 的简介  1.2 TreeMap 的基本使用 2、...
Django之视图的使用 Django之视图的使用视图基本使用函数视图类视图视图与模板请求对象HttpRequest常见属性和...
零基础能学大数据吗? 大数据入门不像学一门编程语言,自学一段时间就OK了。大数据是需要站在编程的基础上学习的...
OperatorChain设计 在JobGraph构建过程中,会将满足链化条件的StreamOperator连接在一起...
Phoenix整合phoeni... 首先我们添加上maven依赖,可以看到5.1.2 对应的hbase是2.4对吧 然后添加了依赖,...
【华为机试真题详解 Pytho... 文章目录 前言题目描述输入描述输出描述题目解析参考代码 前言 《华为机试真题详解》专栏含牛客网...
Scala---Array方法 Scala之Array的方法 文章目录Scala之Array的方法数组声明一个数组1.元素操作替换...
内存避障的前世今生 相关 《内存避障:一个内存乱序实例》 《内存避障的前世今生》 0 总结 单核下的指令...
九龙证券|重要信号!下周,没有... 依据新股发行安排,下周有9只新股申购,包含科创板新股4只、创业板新股3只...
【spring高级49讲】 Spring高级49讲 Spring是整个Java体系最核心的框架,没有之一面试必备技术、思想提升...
Linux - 进程控制(进程... 进程等待必要性之前讲过,子进程退出,父进程如果不管不顾,就...
GeoServer发布ArcM... 项目过程中遇到一个需求:leaflet要使用自定义的底图。现在配图一般都会用ArcMa...
【Vue3 基础加餐篇】07.... Vue 中增加 key ,是为了更精准的定位到元素,从而减少渲染。那具体这个更精准的定位是什么?以及...
吲哚花菁素IR染料IR780 ... 一、中英文别名:CAS号:N/A | 英文名:IR780 ...
【MySQL】解决MySQL登... 大家在打开MySQL时,可能会遇到在登陆界面输入密码之后就闪退的这个问题. 平时我们写代码,虽然会报...
Java:新手学习java需要...   Java是全球使用最广泛的编程语言之一。你可能在想为什么要学习Java?作为一个新的编码初学者&...
【Vue全家桶】模板语法 【Vue全家桶】模板语法 文章目录【Vue全家桶】模板语法写在前面一、Mustache语法二、事件处...
改变网页皮肤-课后程序(Jav... 【案例1-8】改变网页皮肤 一、案例描述 考核知识点onclick()事件 练习目标掌握onclic...
【服务器数据恢复】使用碎片拼接... 服务器数据恢复环境: 某公司一台DELL服务器,作为WEB服务器使用&#...
Ripser.py学习 (1)... 文章目录1 概述2 安装3 示意 1 概述 Ripser.py是一个用于持续同伦 (Persiste...
数据分析-数据探索 文章目录前言主要内容总结更多宝藏 前言 😎🥳😎&#...
stm32 mbed L432... 目录 一.前言 二.简介 三.SPI细节讲解 1.串行通信(serial peripheral ...
基于飞桨实现的特定领域知识图谱... 文本匹配任务在自然语言处理领域中是非常重要的基础任务,一般用于研究两段文本之间的关系。...