выполнить терминал из программы c - PullRequest
1 голос
/ 10 февраля 2011

Для запуска программы c вы делаете что-то вроде этого

bash> gcc test.c -o test

, а затем

bash> ./test

Как мне сделать так, чтобы test.c выполнял терминал в другом окне ??

Ответы [ 5 ]

2 голосов
/ 10 февраля 2011

Вы можете создать новый процесс и использовать функцию system ().Это будет работать на большинстве дистрибутивов Linux.Просто проверьте свойства терминала, чтобы узнать команду для запуска нового терминала.У меня работает "гном-терминал" (Ubuntu, Redhat).

int main()
{
        if(!fork())// child process
        system("gnome-terminal");
        else
        {
                //do rest of the things here in parent process......
        }

}

После fork () новое окно терминала откроется как отдельный процесс.

2 голосов
/ 10 февраля 2011

xterm -e "./test"

Это выполнит 'test' в новом окне xterm. Предполагая, конечно, Linux.

0 голосов
/ 10 февраля 2011

На основании вашего использования слова terminal я предполагаю, что вы используете osx.

Вы можете использовать applecript, чтобы получить поведение:

tell application "Terminal"
activate
do script with command "cd _directory_; ./test"
end tell

Если вы хотите, чтобы программазапустить окно, вызвать вызов программы, чтобы запустить команду [или записать во временный файл и запустить скрипт]

0 голосов
/ 10 февраля 2011

Вы хотите открыть окно для нового терминала, или что вы хотите сделать?Ваш вопрос не совсем ясен.

Если вы хотите выполнить некоторые команды, вам нужно справиться с вызовами sys для запуска нового процесса.

В Windows есть функция system (),но я не уверен, что он существует в Linux или других системах posix.

0 голосов
/ 10 февраля 2011

Зависит от того, в какой системе вы находитесь, и какой терминал вы имеете в виду, но вот как это сделать, если вы используете gnome (например, Ubuntu)

gnome-terminal -x sh -c "./test"

Если вы этого не сделаетехотите, чтобы окно закрылось сразу после окончания ./test, вы делаете

gnome-terminal -x sh -c "./test; cat"
...