我的问题是我有这段代码,我的超时工作正常,所以我没有提到它的所有事情。当我调用 stop(( 时,我应该退出启动函数。现在我被困在我的选择上,直到我的超时。我应该如何从我的停止函数写入文件描述。
static int filedesc = STDIN_FILENO;
start()
{ fd_set set;
FD_ZERO(&set);
FD_SET(filedesc, &set);
while(something)
{
select(FD_SETSIZE, &set, NULL, NULL, timeout);
}
pthread_exit(NULL);
}
stop()
{
something = FALSE;
pthread_join(start, NULL);
}
我尝试使用管道进行选择,但我不确定我做错了什么。由于我想从另一个函数写入,因此我正在打开一个管道作为全局。这不符合目的。我用管子对吗?
这是正确的代码。它的工作原理:
static char* msg1 = "exit";
static int p[2];
start()
{ fd_set set;
pipe(p);
FD_ZERO(&set);
FD_SET(p[0], &set);
while(something)
{
select(FD_SETSIZE, &set, NULL, NULL, timeout);
FD_SET(p[0],&set)
}
pthread_exit(NULL);
}
stop()
{
something = FALSE;
write(p[1]),msg1,16);
pthread_join(start, NULL);
}