使用 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()
和家人。
我有一个像这样的简单程序
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()
和家人。