【问题标题】:execute shell command with sudo in c program在c程序中用sudo执行shell命令
【发布时间】:2013-03-12 04:21:45
【问题描述】:

在我的 C 程序中执行此命令的最佳方法是什么:“sudo cat /var/log/auth.log | grep Accepted”? 我尝试使用:

sprintf(command_result,"sudo cat /var/log/auth.log | grep Accepted"); 

但它显然不起作用。

【问题讨论】:

  • 你可以使用 system();函数,只需将命令作为 i/p 参数给出..

标签: c shell command-line system execute


【解决方案1】:

你不能用sprintf()执行命令,你至少需要system()

修复:

sprintf(command_result, "sudo cat /var/log/auth.log | grep Accepted");
system(command_result);

【讨论】:

  • 好吧,它没有用(虽然系统当然是正确的功能),但我认为可能需要 sudo 访问权限。不过我不知道怎么弄?!
  • 什么也没发生。好像我什么都没放。好吧,它适用于不需要 sudo 访问的命令,但是使用 sudo 显然存在问题:(
【解决方案2】:

你可以用管道执行命令

FILE *fp;
fp=popen(command_result,"r");

然后您可以从管道fp 读取命令输出,就像您从带有fgets()fread() 的文件中读取一样...

顺便说一句,如果 sudo 命令中需要密码,则不能执行 sudo 命令

【讨论】:

    猜你喜欢
    • 2013-09-04
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2015-09-03
    相关资源
    最近更新 更多