请教:Qt4.8如何调用外部需要root权限的程序,大牛速来!!

shen_wei 2012-03-30 04:44:41
1.root编译的驱动程序 A,imsmod 加载进去。

2.通过测试工具B,root测试,一切正常,用户测试不能读取内容。

3.现在有QWidget 界面程序C,

通过B的参数来获取系统信息,初始化界面程序C。也就是说在启动C时,就执行来B。

如何在C执行时,获取到系统信息哪??也就是第二步内容(root获取信息)。

简单来说:如何才能让通过qtcreator编译的程序具有root权限呢???

让程序以 root权限执行!!!
...全文
358 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shen_wei 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

引用 13 楼 的回复:

yiyaaixuexi

谢谢美女的详细解释。。。刚接触Qt编程。。还有很多东西要学习!!
注意到你的网名叫hacker
[/Quote]

这个怎么了。。。名称而已。。。呵呵呵
xiachm 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

yiyaaixuexi

谢谢美女的详细解释。。。刚接触Qt编程。。还有很多东西要学习!!
[/Quote]注意到你的网名叫hacker
shen_wei 2012-03-31
  • 打赏
  • 举报
回复
yiyaaixuexi

谢谢美女的详细解释。。。刚接触Qt编程。。还有很多东西要学习!!
念茜 2012-03-31
  • 打赏
  • 举报
回复
简单来说:如何才能让通过qtcreator编译的程序具有root权限呢???
让程序以 root权限执行!!!


你误解了权限的概念。
“具有root权限” 是指用户,当前用户是否具有root权限,还是只有user权限,而并非是说一个可执行应用程序。 你 ll hello 察看应用程序,比如得到:-rwxrwxr-x 可以看到不同用户对文件的读写执行 权限限定。

你若想不让user用户执行你的程序,即可用chmod命令。
你若想提升当前用户的操作权限,就是从user到root,那么切换用户或者sudo。
至于前面有人提到setuid(0)来提升当前权限这个办法,也必须是root用户下,执行这个命令才有效的。

如果你是做嵌入式linux应用程序,就是说将来要移植给板子的,除非大型项目,一般都是一个root单用户,你也就不用考虑这些,看你具体情况。

还是那句话,在UBuntu的本地测试,你要理清概念,“具有root权限”是指用户,而不是程序。
shen_wei 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

我不知道LZ的嵌入式设备上运行的是何种Linux。不过有个setuid的函数的功能或许你可以参考一下。
[/Quote]
现在是 ubuntu10.04 的系统。。。
shen_wei 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

还有一个方法,把你需要启动的那个程序做成守护进程,然后和你的程序进行进程间通讯。
[/Quote]
这个怎么做??能否详细解答。。。
ywergs 2012-03-31
  • 打赏
  • 举报
回复
我不知道LZ的嵌入式设备上运行的是何种Linux。不过有个setuid的函数的功能或许你可以参考一下。
xiachm 2012-03-30
  • 打赏
  • 举报
回复
还有一个方法,把你需要启动的那个程序做成守护进程,然后和你的程序进行进程间通讯。
shen_wei 2012-03-30
  • 打赏
  • 举报
回复
那是自然啊 不过移植,也得需要linux环境支持的。。。刚接触这个。。。有很多东西要学习的!!!
xiachm 2012-03-30
  • 打赏
  • 举报
回复
这与Qt一点关系也没有,这是Linux的特性,执行权限和程序的移植也没有关系。

楼主还是了解些Linux的知识吧。
shen_wei 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiachm 的回复:]

那你以root身份登录Linux,问题不就都解决了吗!
[/Quote]
这个是可以解决。。但是这样也不是太好吧。。。不知道移植时会咋样。。。

也就是移植到平台上会有什么问题,还不太会移植!!初学QT。。
xiachm 2012-03-30
  • 打赏
  • 举报
回复
那你以root身份登录Linux,问题不就都解决了吗!
shen_wei 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

这个问题已经在另一个帖子里给你回答了,让你的程序使用gksu启动,试一下吧
[/Quote]
这个不可能的。。因为要作嵌入式的程序。。在嵌入式如何输入???这个是个问题
xiachm 2012-03-30
  • 打赏
  • 举报
回复
这个问题已经在另一个帖子里给你回答了,让你的程序使用gksu启动,试一下吧

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧