#c
#c
Вопрос:
Я хочу создать новое приглашение с желаемым именем в Linux. И это должно работать, как показано ниже.(если мое имя исполняемого файла отсутствует)
original_shell$./out
my_new_shell>give some input here
...
...
some output
...
my_new_shell>done
original_shell$
Как это сделать с помощью C, любая помощь приветствуется!
Комментарии:
1. Используете ли вы bash ? Если да, вы можете изменить переменную среды PS1, чтобы изменить свое приглашение.
Ответ №1:
Вы можете выполнить setenv("PS1", "Your_new_prompt", 1);
Я не тестировал его, но думаю, что все в порядке.
Надеюсь, это поможет.
Комментарии:
1. Это не сработает, потому что не изменяет родительскую среду.
2. Очевидно, что нет, если вы не используете
execlp()
после вызоваsetenv()
, но давать вам подсказки, чтобы найти ответ, умнее, чем давать вам ответ, не позволяя вам искать самостоятельно… На самом деле это должен быть лучший ответ.
Ответ №2:
Вы можете использовать system()
для запуска новой оболочки с PS1
set:
#include <stdlib.h>
int main() {
system("PS1='my_new_shell>' bash");
return 0;
}
Или вы можете использовать, а затем выполнить оболочку setenv()
:
#include <stdlib.h>
#include <unistd.h>
int main() {
setenv("PS1", "my_new_shell>", 1);
execlp("bash", "bash", (char*)NULL);
return 0;
}
Комментарии:
1. Это работает при создании нового приглашения. Спасибо за помощь! Как я могу выйти из новой оболочки с помощью команды «готово»? Я знаю, что оно завершается командой «exit». А также как я могу использовать какие-либо входные данные в программу C из новой оболочки? Еще раз спасибо.