Я новичок в Ubuntu и изучал терминал. Я застрял здесь. У меня есть два файла C ++ x.cpp и y.cpp. Я бегу х с первого терминала. Он имеет следующую строку:
system("gnome-terminal");
это открывает новое окно терминала. Далее это выглядит так:
system("g++ y.cpp");
system("./a.out");
но это работает у в том же терминальном окне. Я хочу, чтобы вы запустились во вновь открытом окне терминала. Пожалуйста помоги.
Каждый звонок system()
запускает отдельный новый процесс, как дочерний процесс вызывающего. Между процессами нет никакой связи (за исключением того, что они имеют одного и того же родителя). Каждый вызов системы не запускает другую команду в том же контексте, что и предыдущий вызов, как, например, выполнение в командной строке оболочки.
Вы можете начать gnome-terminal
с командой для запуска (вместо приглашения оболочки), чтобы вы могли использовать system()
чтобы запустить gnome-терминал, который запускает нужные вам команды:
system("gnome-terminal -e 'sh -c \"g++ y.cpp && ./a.out\"'");
Это запустит команду gnome-terminal -e 'sh -c "g++ y.cpp && ./a.out"'
(но вам нужно экранировать символы двойной кавычки, чтобы поместить команду в строковый литерал C ++).
Что говорит gnome-terminal
запустить снаряд (sh
) с командой g++ y.cpp && ./a.out