2016-10-13 2 views
-1

Я хочу создать новое приглашение с нужным именем в linux. И он должен работать, как показано ниже. (Если мое имя исполняемого вне)создать новое приглашение в оболочке linux с помощью c

original_shell$./out 
my_new_shell>give some input here 
... 
... 
some output 
... 
my_new_shell>done 
original_shell$ 

Как это сделать с помощью C, любая помощь приветствуется!

+2

Используете ли вы Баш? Если да, вы можете изменить переменную среды PS1, чтобы изменить подсказку. – Hcetipe

ответ

0

Вы можете сделать setenv("PS1", "Your_new_prompt", 1);

Я не проверял, но я думаю, что это нормально.

Надеюсь, что это поможет.

+0

Это не сработает, потому что оно не изменяет родительскую среду. –

+0

Не работает.! – Srikanth

+1

Очевидно, что если вы не используете 'execlp()' после вызова 'setenv()', но дать вам подсказки, чтобы найти ответ, более умный, чем дать вам ответ, не позволяя вам выглядеть самостоятельно ... На самом деле это должно быть лучший ответ. – souki

0

Вы можете использовать system() запустить новую оболочку с PS1 набор:

#include <stdlib.h> 

int main() { 
    system("PS1='my_new_shell>' bash"); 
    return 0; 
} 

Или вы можете использовать setenv(), а затем EXEC оболочки:

#include <stdlib.h> 
#include <unistd.h> 

int main() { 
    setenv("PS1", "my_new_shell>", 1); 
    execlp("bash", "bash", (char*)NULL); 
    return 0; 
} 
+0

Это работает при создании нового приглашения. Спасибо за помощь! Как я могу выйти из новой оболочки с помощью команды «done»? Я знаю, что он выходит с командой «exit». А также как я могу вносить какие-либо данные в программу C из новой оболочки? Еще раз спасибо. – Srikanth

Смежные вопросы