试图直接通过STDIN传递sudo密码

时间:2013-05-02 18:34:54

标签: c pipe sudo file-handling

这是我的程序,似乎没有用。有时我认为它适用于\0\r而不是\n,但我想这是因为我已经在运行此程序的终端上执行了sudo命令,因此它没有不要提示我输入密码。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
   FILE* pipe = popen("sudo -S ls", "w");   
   pwrite(pipe,"mypass\n");
   pclose(pipe);
   return 0;
}

我哪里错了?我该如何解决?感谢。

1 个答案:

答案 0 :(得分:1)

我刚刚找到了一个似乎有效的解决方法。谢谢大家,他们调查了这个问题。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
   FILE* pipe = popen("echo mypass | sudo -S ls", "w");   
   pclose(pipe);
   return 0;
}