qt执行linux sudo命令语句,Qt程序在Mac下需要执行sudo命令的解决办法

以前的代码都是在Linux下运行,并且都是直接的 root用户,所以根本没有考虑到权限的问题

来到 Mac 发现各种不行,只要是带了  sudo 的命令一律无法执行

system("sudo ls");

没错,这个简单的命令出问题了

错误提示 : sudo: no tty present and no askpass program specified

本以为会自动弹出密码输入框,可是,,没有,,,于是开始了漫长的查找中

开始的时候搜索方式不对,比如搜索  Mac root  --- Mac 权限 ---Mac sudo

各种没有结果,让我顿时菊花一紧,难道又像之前MacUSB通信那么蛋疼吗?

结果还是被我找到了解决办法,不过内容不详细,所以这里再写一篇,弥补一下

需要提升权限,那就必须要通过系统的密码提示框来做到这点,可是,qt不具备,MacAPI好像也没有,怎么办呢

终于,applescript 的出现让我明白来,原来Mac下还有和 shell脚本不一样的脚本

找到了获取权限的命令

doshell script"ls"withadministrator privileges

就是这样的,如果执行它,就会弹出密码输入框,输入密码后,命令ls 就是以管理员权限执行的了

对于刚刚入手Mac的我,运行它好像也是个问题,这里写一下过程

1、通过Mac的实用工具中的脚本编辑器,写入代码,点击运行,可以看到密码框的输入,证明没有问题

2、编辑器上面的下拉箭头可以保存脚本,保存为 a 桌面,可以看到桌面有个 a.scpt

3、在qt中怎么执行呢?

system("osascript a.scpt"); osascript 是Mac的命令,用来执行脚本的

这样就可以执行 sudo 了

当然,脚本中的 ls 命令是看你的需求了,如果需要执行多条,我是用 ;隔开执行的,比如  ls;ls -a 这样就可以执行两条命令了

对脚步还不熟悉,先写下来用着吧

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值