• 4165阅读
  • 1回复

一个qte程序调用另一个qte程序 [复制链接]

上一主题 下一主题
离线jch_zxc
 

只看楼主 倒序阅读 楼主  发表于: 2008-04-17
一个qte程序调用另一个qte程序
    假定有A,B两个应用程序,实现在A中有一个按钮,点击后调用B程序。大概如下,./A -qws运行A程序,在按钮中clicked()连接到执行system(./B -qws),这样就会有两个qwsServer,运行后出现QServerSocket: failed to bind or listen to the socket错误。但是工作正常,有什么办法让B使用A的qwsServer呢?
    如果不是父子进程关系(不调用system()),即两个不相关的qte程序,假定./A -qws,在另一个终端下直接运行./B可以吗?如果不行,怎么让B使用A这个qwsServer呢?
离线owenbbkp

只看该作者 1楼 发表于: 2008-04-17
一般在由Qte构建的系统中,有一个进程专门作为qwsServer(加-qws或其他方法),其他进程都由它来启动(不加-qws) ,基本方法是先fork,再用execl等。
贴一段我以前写过的代码:

    38  void Controller::launchApp(const char* fileName)
    39  {
    40      if (fileName == NULL)
    41      {
    42          qCritical("Launch path is NULL!\n");
    43      }
    44     
    45      pid_t pid = fork();
    46
    47      if (pid == 0)
    48      {
    49          qDebug("new process forked. PID is:%d\n", getpid());
    50          int result = execl(fileName, fileName, 0);
    51
    52          if (result < 0)
    53          {
    54              qCritical("failed to launch application!\n");
    55          }
    56          _exit(-1);
    57      }
    58  }
快速回复
限100 字节
 
上一个 下一个