Я придумал что-то вроде этого ..
int main (unsigned argc, char **argv)
{
printf("***this is the original terminal window!!!***\n");
if(!fork()){//child
system("gnome-terminal -e ./client");
}
else{
printf("this is the parent, printing in the original terminal window\n");
}
}
Открывает новое окно терминала, где выполняется ./client. Единственная проблема заключается в том, что новое окно терминала закрывается автоматически после завершения действия ./client. Как я могу это исправить, не делая глупостей, например for(;;)
on ./client? Кроме того, весь этот метод не является оптимальным решением ...
То, что я действительно хотел бы сделать, это:
int main (unsigned argc, char **argv)
{
printf("***this is a generator!!!***\n");
if(!fork()){//child
system("gnome-terminal or wathever"); //the solution must be here right??
printf("this get's printed on the new window and whatever i do on the\
child process get's done there too")
//and the window won't close automatically
}
else{
printf("this is the parent, printing in the original terminal window\n");
}
}
Это было бы более гибко, и я бы просто предпочел не exec()
из другого файла ...
Я использую Ubuntu 11.10 и язык C.