Ncurses C程序在xwindows的终端中启动

时间:2014-07-23 09:35:22

标签: c terminal x11 ncurses

我已经制作了一个简单的ncurses程序,但它需要在终端内运行以显示任何内容。 如果有人只是在X11的文件管理器窗口中双击它,程序将不会产生任何输出。 所以我的问题是,我怎么能这样做,如果有人双击二进制文件,它会自动创建一个终端窗口在其中运行? (而不是那个人必须打开终端并且必须输入命令才能导航并执行它。)

2 个答案:

答案 0 :(得分:0)

您可以创建一个简单的bash shell脚本:

#!/bin/bash
xterm -e "your command"

答案 1 :(得分:0)

这可能是一个黑客,但你可以制作一个这样的myapp,运行myapp:

#include <cstdlib>
#include <stdlib.h>

int main() {

   char *display = getenv("DISPLAY") ; 

   if(display){
       std::system("/etc/alternatives/x-terminal-emulator -e <myapp>");
   } else {
       std::system("<myapp>");
   }      

   return 0;
}

或者在单个可执行文件中,如下所示:

#include <cstdlib>
#include <stdlib.h>
#include <string>

int main(int argc, char** argv) {
   char *display = getenv("DISPLAY") ;
   std::string args = "";

   for(int i=1;i<argc;i++){
      args = argv[i];
      if(args == "--with-term") display = NULL;
   }

   if(display){
       std::system("/etc/alternatives/x-terminal-emulator -e <myapp> --with-term");
       return 0;
   }
   //else
   //my app code

   return 0;
}