标题:一个qte程序调用另一个qte程序
作者:jch_zxc
日期:2008-04-17 17:13
内容:
假定有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呢?
#1 [owenbbkp 04-17 20:19]
一般在由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 }