- 论坛徽章:
- 0
|
我的程序大概要实现的目标是,点击一个button的时候,调用firefox打开google.cn,多次点击,就在一个firefox 里面打开多个tab,但是现在碰到的问题是,按照我现在的程序,里面出现了很多僵死进程,僵死的进程是我的主进程,我想原因可能会是pid == 0的时候execlp(system("firefox www.baidu.com"),NULL);直接替换了主进程,照成主进程直接变成僵死进程了,不知道是不是这个原因,。不知道这样的问题该如何解决呢?、
#include <gtk/gtk.h>;
#include <unistd.h>;
#include <stdio.h>;
#include <sys/types.h>;
#include <stdlib.h>;
static void play(GtkWidget *widget, gpointer data)
{//每次按下button都调用本回调函数,新的进程也就是在这里开启的,
pid_t pid;
pid = vfork();
if(pid == 0)
{
execlp("/usr/bin/firefox www.google.cn",NULL);
}
else if (pid<0)
printf("------------pid<0");
else if (pid>0)
{
printf("father----------pid=%d\n",pid);
}
}
int main(int argc, char* argv[])
{//包含一个button的window界面
GtkWidget *window;
GtkWidget *button;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width (GTK_CONTAINER(window), 10);
button = gtk_button_new_with_label ("Open Firefox");
g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(play), NULL);
gtk_container_add (GTK_CONTAINER (window),button);
gtk_widget_show_all (window);
gtk_main();
return 0;
} |
[ 本帖最后由 chentianyu_hit 于 2009-3-20 14:14 编辑 ] |
|