hydra_13
@hydra_13
Пограммист - любитель)

Как получить доступ к оболочке в программе на C на строке system("/bin/bash"); если запускать программу из sh-скрипта?

Пример кода:
#include <unistd.h>
#include <stdio.h>
int main() {
    system("/bin/bash");
    return 0;
}


Запуск по стандарту:
$ gcc test.c -o test
$ echo "./test" > test.sh
$ sh test.sh
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Karpion
system("/bin/bash"); - это бред какой-то. Ну, запустится шелл, будет ждать ввода с клавиатуры; по его завершении снова будет работать Ваша программа (т.е. ретурнет ноль).

Зачем Вам этот "доступ к оболочке"? Что Вы им хотите сделать?
Ответ написан
Комментировать
@res2001
Developer, ex-admin
system() не предоставляет подобного функционала.

Необходимо перед запуском процесса создать набор пайпов, форкнуть процесс, в дочернем заменить на пайпы stdin и stdout, затем уже стартовать процесс с помощью одного из вариантов exec.

Если обратная связь не нужна (т.е. не нужно читать, то что пишет дочерний процесс), то можно делать по упрощенной схеме через popen/pclose.

На эту тему в гугле и в литературе масса информации, просто правильно задайте вопрос. Искать нужно что-то типа "перенаправление stdin stdout"

PS: запуск из sh скрипта или на прямую значения не имеет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы