system 终端输出 sudo不存在终端问题

程序中调用终端命令-systerm-没有终端存在错误

关于system函数

你好! 关于system()函数最开始就是本科老师讲课时让终端停留是运用的system("pause")程序就会停留在终端,让我们看清楚结果。学习soocket编程后需要了解system函数,也还死linux库函数的运行原理可以在bantu终端输入man system进行参看系统说明文件

问题

	本次主要是在socket编程中利用`system`函数设置pacn模块的can通讯参数。当然这些参数也可以在终端输入,设置参数需要利用`sudo`提供命令权限。
	同样在代码中命令以字符窜的形式通过systerm函数发送。如果命令中没有`sudo`,依然会提示权限不过或者命令不被允许。加上`sudo`后显示:

没有终端存在,且未指定askpass 程序
在这里插入图片描述

解决

简单分析或者百度可以知道,是权限和密码的问题。终端中sudo 后一般是需要输入密码的。然而程序中或者是项目里,没有输入密码的设计。

百度或者 CSDN 中有很多帖子都多该问题做了说明。但并不一定嫩够解决问题。

下面我来给出我的解决方案

  1. 打开一个新终端
  2. 输入sudo visudo
  3. 在文件最后添加句:username ALL = NOPASSWD: /fullpath/to/command, /fullpath/to/othercommand:
  4. 例句:zgq ALL = NOPASSWD: /sbin/ip, /sbin/ifconfig

然后问题即解决

另外附录

对于返回的错误代码可以利用下面解析

    int ret;
    ret = system(down);
      fprintf(stderr, "candown error: %s\n", strerror(ret));
      perror("can0 down");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值