Несколько терминальных процессов в C - PullRequest
1 голос
/ 12 апреля 2011

Я хотел бы, в коде C, создать более одного терминального процесса.Например, я хочу запустить foo в терминальном процессе, а затем в отдельном терминальном процессе я хочу запустить bar.Это возможно?Могу ли я сделать это с system(char *)?

Ответы [ 3 ]

2 голосов
/ 12 апреля 2011

Это звучит как работа для posix_spawn () . Вот пример . Обязательно не вызовите system() для запуска новых процессов.

0 голосов
/ 12 апреля 2011

Если вы действительно хотите быть злым, предполагая, что вы работаете с X, вы можете запустить xterm следующим образом:

while(processes to spawn)
{
    if(!fork())
        execlp("xterm", "-e", "foo"); // or "bar" or "baz" ...
}
0 голосов
/ 12 апреля 2011

Непонятно, что вы подразумеваете под «терминальным процессом».Вы не можете (легко?) Создать другой процесс, который каким-то образом заставляет пользователя открывать больше терминалов, но вы можете использовать fork(2) для создания дочернего процесса.

forkсоздает другую копию вашего процесса с тем же начальным состоянием, за исключением того, что он возвращает 0 в дочернем процессе и возвращает ненулевой PID в родительском процессе.Таким образом, эскиз будет выглядеть следующим образом:

if (fork())
    system("bar");
else
    system("foo");

Это приведет к тому, что ваша оригинальная программа породит два процесса, запускающих foo и bar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...