我用的是RHEL 8,系统D版本是239-74 我想在c++上使用dbus获取数据. 只使用一个容器不成问题(但这种情况在退出容器时也会出现相同的错误) 但是,当我应该再使用一个容器时,我得到了"设备或资源繁忙"
#include <iostream>
#include <unistd.h>
#include <systemd/sd-bus.h>
int main() {
sd_bus_error error = SD_BUS_ERROR_NULL;
sd_bus *bus = nullptr;
int ret = sd_bus_open_system(&bus);
const char *service_name = "org.freedesktop.systemd1";
const char *object_path = "/org/freedesktop/systemd1";
const char *interface = "org.freedesktop.systemd1.Manager";
const char *method = "ListUnits";
sd_bus_message *reply = nullptr;
ret = sd_bus_call_method(bus,
service_name,
object_path,
interface,
method,
&error,
&reply,
"");
if (ret < 0) {
return 1;
}
const char *unit_name;
const char *unit_description;
const char *unit_load_state;
const char *unit_active_state;
const char *sub_state,*followed_state,*object1_path,*queued_job,*job_type,*job_object_path;
unsigned int uint;
ret = sd_bus_message_enter_container(reply, 'a', "(ssssssouso)");
if(ret<0){
std::cerr <<strerror(-ret);
}
ret = sd_bus_message_exit_container(reply);
if(ret<0){
std::cerr <<strerror(-ret);
}
sd_bus_message_unref(reply);
sd_bus_unref(bus);
return 0;
}
我认为是环境问题,但在Ubuntu上,同样的错误也发生了. 我想读取DICT数组,但无法退出容器,因此无法获取其他数据