樱花流逝
进程间使用D-bus通信时发生段错误

本帖最后由 樱花流逝 于 2016-1-26 22:41 编辑

代码是这样的

[mw_shl_code=c,true]#include<stdio.h>

#include<glib.h>

#include<dbus/dbus-glib-lowlevel.h>

static gboolean send_ding(DBusConnection *bus);

int main(){

GMainLoop* loop;

DBusConnection *bus;

DBusError error;

loop=g_main_loop_new(NULL,FALSE);

dbus_error_init(&error);

bus=dbus_bus_get(DBUS_BUS_SESSION,&error);

if(!bus){

g_warning("connecting failure to D-bus: %s",error.message);

dbus_error_free(&error);

return 1;

}

dbus_connection_setup_with_g_main(bus,NULL);

g_timeout_add(1000,(GSourceFunc)send_ding,bus);

g_main_loop_run(loop);

return 0;

}

static gboolean send_ding(DBusConnection *bus){

DBusMessage *message;

message=dbus_message_new_signal("/com/burtonini/dbus/ding",

"com.burtonini.dbus.Signal",

"ding");

dbus_message_append_args(message,

DBUS_TYPE_STRING,"ding!",

DBUS_TYPE_INVALID);

dbus_connection_send(bus,message,NULL);

dbus_message_unref(message);

g_print("ding!\n");

return 0;

}[/mw_shl_code]

编译命令是这样的

gcc `pkg-config --cflags --libs dbus-glib-1` -g -o send dbus-ding-send.c

但是运行时终端显示“段错误”并直接退出了

用gdb调试时结果是这样的

[Thread debugging using libthread_db enabled]

Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.

strlen () at ../sysdeps/x86_64/strlen.S:106

106 ../sysdeps/x86_64/strlen.S:没有那个文件或目录

然而还是不知道错在哪orz

求解答

wugy315
这个问题最终你解决了吗
展开Biu

这个问题最终你解决了吗

[查看全文]