Это моя программа, и она, похоже, не работает. Иногда я думал, что это работает с \0
или \r
вместо \n
, но я думаю, это потому, что я уже выполнил команду sudo на терминале, где я запускал эту программу, поэтому он не запрашивал у меня пароль.Пытается передать пароль sudo напрямую через STDIN
#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;
}
Куда я иду не так? Как я могу это исправить? Благодарю.
Я предполагаю, что 'sudo' проверяет, работает ли он на TTY и откажется работать, если нет. –
Вы можете узнать, выполняется ли текущий процесс с правами root, а если не запрашивать _user_ вместо 'sudo'. – Nick
Спасибо @KerrekSB и Nick за то, что они дали некоторые указатели. Действительно ценю это. Ответ найден ниже. –