一篇dbus移植的点点滴滴

这篇博客讲述了作者在进行DBus移植过程中遇到的挑战和经验教训。强调了解决问题的关键在于理解英文文档和论坛,提倡共享实际遇到的技术难题,以促进开源社区的发展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3个月了,终于把这个问题搞定了,前后学习加动手可能花了1个半月在这个系统搭建上面。我怀着复杂的心情写这篇文章,对很多懂这方面的专家我无话可说,对自己我更不知道该爱还是该恨。 
  
6月中的时候我来到新的公司,接到的第一个任务就是交叉编译dbus,并在目标机上跑起来。我工作快3年了,一直搞的嵌入式开发,说实话在FSK很失败,以前开发环境都是搭好了,我们只是做一些应用程序的开发而已,我自认为最有成就的就是写了LCD和LED驱动。新公司真的有很多牛人,软硬件都懂,自己开始有点自卑。对第一个任务我甚至不知道怎么搭建嵌入式交叉编译环境,指定一个交叉编译工具链都花了我半天的时间,更不要说交叉编译dbus这么复杂的东西了,依赖的库太多,遇到的编译错误也让我摸不着头脑。幸好,这些东西做过就会了,在师傅的带领下我花了10天的时间把dbus交叉编译搞定。编译过程如下: 
http://blog.chinaunix.net/u3/99283/showart.php?id=1971652 其中有一个隐患在里面。 
  
好了,该运行测试程序,运行的时候发现一些错误一个个解决掉,发现通信有问题。(其实就是交叉编译里面的一个隐患造成的) 
http://blog.chinaunix.net/u3/99283/showart.php?id=1976658 
  
接下来的1个月被师傅叫去接别的任务,说这个问题可以先缓一下以后解决。1个月后又开始接着搞,这次的任务是要把input subsystem、udev、hal、dbus全部搭建起来,预期的的效果是,当触摸屏有按键事件的时候能通过input驱动-> hal
<think>嗯,用户想了解如何停止一个D-Bus会话总线。首先,我需要回忆一下D-Bus的基本知识。D-Bus是一种在Linux系统中用于进程间通信的消息总线系统,分为系统总线和会话总线。系统总线是全局的,而会话总线是针对用户会话的。 接下来,用户的问题是关于停止会话总线。通常情况下,会话总线会在用户注销时自动终止,但可能有特殊情况需要手动停止。我需要确认正确的命令和方法。记得D-Bus的守护进程是dbus-daemon,可能需要查找相关的进程ID来终止。 不过,直接终止D-Bus会话总线可能会导致依赖它的应用程序出现问题,比如桌面环境或某些服务崩溃。所以需要提醒用户谨慎操作,并建议在必要时重启会话,比如通过注销或重启系统。 另外,是否有特定的命令可以停止D-Bus?可能需要使用dbus-send发送关闭信号,或者查找进程ID后用kill命令。需要检查这些步骤的正确性,确保命令语法正确,比如使用pkill或killall来终止dbus-daemon进程。 还要考虑用户可能的使用场景,比如调试或解决某些问题,所以提供替代方案,如启动自定义总线,可能会有帮助。同时,确保回答结构清晰,分步骤说明,并强调潜在风险,保证用户理解操作的影响。</think>要停止一个D-Bus会话总线,需要分步骤理解其运行机制和操作方式: 一、D-Bus会话总线的特性 1. 会话总线默认由用户登录时自动启动(如Linux桌面环境的`dbus-daemon --session`) 2. 通常绑定到用户会话的生命周期,用户注销时自动终止 3. 每个会话总线有独立地址(可通过`$DBUS_SESSION_BUS_ADDRESS`查看) 二、手动停止的两种方式 1. 终止守护进程: ```bash # 查找会话总线进程 pgrep -af dbus-daemon.*--session # 输出示例:1234 /usr/bin/dbus-daemon --session # 发送终止信号 kill -TERM 1234 ``` 2. 通过D-Bus自身接口(需要bus地址): ```bash dbus-send --session --dest=org.freedesktop.DBus \ --type=method_call --print-reply \ /org/freedesktop/DBus \ org.freedesktop.DBus.Shutdown ``` 三、注意事项 1. ⚠️ 强制终止可能导致依赖进程崩溃(如桌面环境、通知服务等) 2. 推荐替代方案: - 正常注销用户会话 - 重启系统 - 启动独立总线用于测试: ```bash export DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --session --print-address --fork) ``` 四、验证操作 终止后检查状态: ```bash dbus-send --session --dest=org.freedesktop.DBus \ --type=method_call --print-reply \ /org/freedesktop/DBus \ org.freedesktop.DBus.Ping # 预期返回错误 ``` 建议仅在调试或特殊需求时操作,常规使用应保持会话总线正常运行。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值