c - 使用超时或在同一模块中的另一个函数写入其文件描述符来中断选择函数



我的问题是我有这段代码,我的超时工作正常,所以我没有提到它的所有事情。当我调用 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);
    }

最新更新