C程序在另一个终端中运行xyz.out文件

时间:2016-10-24 16:12:44

标签: c

我可以通过此代码打开一个新终端

char *argv[]={"gnome-terminal"," -x ","/home/try/",NULL};
if(execvp(argv[0], argv)==-1){
    printf("Error in receiver\n");
    exit(EXIT_FAILURE);
}

这将打开一个带路径/ home / try

的终端

我可以通过

打开另一个程序
system("./xyz");

我有一个程序说,pqr.c,我想通过它打开一个已经存在的程序xyz.c,但我希望pqr和xyz的输出显示在两个不同的终端上。

怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用终端程序自己的功能。大多数(如果不是全部)Unix终端仿真器都可以使用一个参数来告诉他们运行什么程序,而不是用户的shell。

gnome-terminal在这里没有什么不同,它也使用了最常见的参数: -e

所以你的代码看起来像:

char *argv[]={
    "gnome-terminal",
    "-x", "/home/try/", // <-- note: no space before or after "-x"
    "-e", "/path/to/your/program",
    NULL};
if(execvp(argv[0], argv)==-1){
    printf("Error in receiver\n");
    exit(EXIT_FAILURE);
}

需要注意的一些事项:

  • 一旦内部程序(/path/to/your/program)完成执行,终端就会关闭。为了防止这种情况,您可以在终止之前让程序等待一些输入。
  • 如代码段中所述,程序参数周围不应有其他空格。如果gnome-terminal可以正常使用它们,这只意味着它在解析参数时会删除这些空格。