в общем нужно выполнить команду например через с++ в shell, и узнать были ли ошибки при выполнении, можно ли как-то это сделать.
и можно как-нибудь выполнит команду от другого пользователя, передав при этом пароль, то есть без требования на ввод.
чтобы он не запрашивал пароль а сразу бал выполнить.
shell - вывод ошибок, sudo/su (shell - вывод ошибок, sudo/su)
Модератор: Модераторы разделов
-
nesk
- Сообщения: 2268
- Статус: Линукссаксовец
- ОС: MS Windows XP Home SP3
Re: shell - вывод ошибок, sudo/su
сделать pipe
fork
в порожденном процессе закрыть дескриптор на чтения из канала.
продублировать дескриптор на запись в канал на дескрипторы с номерами 1 и 2
закрыть дескриптор на запись
сделать exec
в отце
закрыть дескриптор на запись в канал,
читать из дескриптора на чтение
Можно было бы использовать popen, но я не уверен, что он перенаправляет так же и вывод ошибок
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
-
Alxn1
- Сообщения: 402
- Статус: Красноглазик со стажем
- ОС: Mavericks
Re: shell - вывод ошибок, sudo/su
system().
-
nesk
- Сообщения: 2268
- Статус: Линукссаксовец
- ОС: MS Windows XP Home SP3
Re: shell - вывод ошибок, sudo/su
как с помощью system можно получить в основную программу вывод ошибок запущенной команды?
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: shell - вывод ошибок, sudo/su
Если стандартный вывод не нужен, то можно подменить дескрипторы:
Код: Выделить всё
popen("команда 2>&1 > /dev/null", "r");А можно проверять весь вывод вместе, убрав последнее перенаправление.
-
svary
- Сообщения: 49
- ОС: Linux FC-9
Re: shell - вывод ошибок, sudo/su
А зачем ? В исходеном посте про это ничего не говорится!
Человеку нужно узнать - выполнилась программа ПРАВИЛЬНО или НЕПРАВИЛЬНО. Для этого достаточно проанализировать код завершения. Для system :
Код: Выделить всё
RETURN VALUE
The value returned is -1 on error (e.g. fork(2) failed), and the return status of the command otherwise.
This latter return status is in the format specified in wait(2).Если запускаемая программа возвращает "нормальные" коды возврата, то этого будет вполне достаточно.
можно как-нибудь выполнит команду от другого пользователя, передав при этом пароль
Не очень корректно сформулирована проблема.
Пароль и логин передаются при открытии сессии, а не при запуске программы.
Подозреваю, что Вам нужно запустить на выполнение файл, принадлежащий другому пользователю, а Вы не входите в его группу.
Тут есть несколько путей :
1) Сисадмин разрешает выполнять этот файл ВСЕМ выполнив команду chmod 0755 <Ваш исполняемый файл>
2) Сисадмин разрешает всем запускать этот файл членам группы и включает Вас в члены группы.
3) Сисадмин прописывает в файле /etc/sudoers разрешение Вам запускать эту программу.
4) Хозяин запускаемый программы устанавливает у нее бит Set-User-Id, разрешает ее запуск ВСЕМ но программу пишет так,
что бы разные юсеры не "поубивали" друг друга.
-
Alxn1
- Сообщения: 402
- Статус: Красноглазик со стажем
- ОС: Mavericks
Re: shell - вывод ошибок, sudo/su
Как ниже уже отметили, то оно в данной постановке задачи и не требуется, а коды возврата процесса system() возвращает.