【发布时间】:2012-07-19 07:53:57
【问题描述】:
我正在编写一个程序,一旦按下按钮,我必须执行一个服务器进程(只有在我决定杀死他时才会停止)。
为了执行这个过程,我决定使用 fork/execv 机制:
void Command::RunServer() {
pid = fork();
if (pid==0) {
chdir("./bin");
char str[10];
sprintf(str,"%d",port);
char *argv[] = {"./Server", str};
execv("./Server",argv);
}
else {
config->pid = pid;
return;
}
}
在“按钮按下”的方法中,我这样做:
command->RunServer();
几天前它似乎工作得很好......现在我得到了错误:
main: xcb_io.c:221: poll_for_event: Assertion `(((long) (event_sequence) - (long) (dpy->request)) <= 0)' failed.
我应该尝试切换到 pthread 吗?我做了什么坏事吗?
谢谢,
呵呵
【问题讨论】:
-
说
char *argv[] = {"./Server", str, NULL}; -
哦,是的,抱歉,它改变了一些东西。
ps中的进程描述现在很干净,以前很丑,有很多 args。