LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1641|回复: 15

QT中能否编成能否加入一个可执行程序(急)

[复制链接]
发表于 2003-9-22 10:41:46 | 显示全部楼层 |阅读模式
我有一个窗口,上面有两个按钮,我希望做到我点击其中一个按钮就执行就能够调用执行另一个编译好了的可执行程序,不知道可不可以做到
发表于 2003-9-22 12:15:28 | 显示全部楼层
man system
 楼主| 发表于 2003-9-22 15:42:47 | 显示全部楼层
版主能否给一个具体一点的例子
谢谢
发表于 2003-9-22 16:35:56 | 显示全部楼层
你可以在按钮连接的SLOT里写:
system("exefilename");
文件加上
#include <cstdlib>
不过这个有点问题,在另一个程序结束以前本程序没响应,qt里调用其它程序的标准方法我不知道,我只会系统的方法,可以用fork、exec:

  1. pid_t pid;

  2. if((pid = fork()) < 0)
  3.   fprintf(stderr, "fork() error\n");
  4. else if(pid == 0){
  5.   execl("./ct", "ct", NULL);  /* ct是当前目录下的另一个程序 */
  6.   fprintf(stderr, "execl() error\n");
  7. }
复制代码

我刚才写了一个简单的qt程序试了一下,倒是没什么问题,文件加上:
#include <cstdio>
#include <cstdlib>
#include <unistd.h>
你可以把fprintf换成一个提示框,比较好一点。
exec看一下man 3 exec
 楼主| 发表于 2003-9-23 10:08:38 | 显示全部楼层
首先谢谢版主,但是有一个问题,我依照你说的第二种办法做的时候,发现我的嵌入的程序执行了两次,但是原来的程序执行的界面不见了,怎莫回事
发表于 2003-9-23 10:17:59 | 显示全部楼层
应该是在父进程和子进程里都运行了exec,你看看是不是有哪写错了,按我上面的写,注意括弧和大括弧。
 楼主| 发表于 2003-9-25 11:05:44 | 显示全部楼层
好像我的扩弧是照你的写的,没错呀
请问你哪里是父线程,哪里是子线程呀
发表于 2003-9-25 11:18:21 | 显示全部楼层
pid=0是子线程
>0是父线程
另外你的少写了一个=号
 楼主| 发表于 2003-9-26 11:07:20 | 显示全部楼层
我有两个按钮,按button1的时候执行一个嵌入的程序pro1,我希望我按button2的时候执行pro2,并且pro1可以自动结束,请问应该怎莫办,最好有点实例代码
发表于 2003-9-26 12:25:23 | 显示全部楼层
ACTION

KILL PRO1 PID
PRO2 PID =  FORK
IF PRO2 PID == 0
EXEC PRO2
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表