使用 system() 和 select 默认输出打开 2 个终端

Open 2 terminals using system() and select default for output

我有一个像这样的简单程序

int main(void) {

    system("gnome-terminal");
    puts("terminal 1");
    system("gnome-terminal");
    puts("terminal 2");

    return EXIT_SUCCESS;
}

运行时: 只打开第一个终端,只有当我关闭它时,程序才会继续,在控制台打印并打开第二个。

如何打开它们? (当第一个打开时不停止我的程序的执行)

如何在我的程序中有选择地在两个终端中打印? (puts("something"); 在第二个终端)

谢谢

这是不可能的,因为 system 阻塞直到执行的程序结束,一种可能的解决方案是使用 fork()

#include <stdio.h>
#include <unistd.h>

int main(void) 
{
    int i;

    for (i = 0 ; i < 2 ; ++i)
    {
        if (fork() == 0)
        {
            printf("terminal %d\n", 1 + i);
            system("gnome-terminal");
        }
    }
    return EXIT_SUCCESS;
}

如果你想与执行的程序交流,请阅读popen(). And you might also be interested in execv()和家人。