gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:15:20 25 4
gpt4 key购买 nike

我的问题是我有这段代码,我的超时工作正常,所以我没有提到它的所有内容。当我调用 stop() 时,我应该退出 start 函数。现在我被困在我的选择上直到超时。我应该如何从我的停止函数写入 filedesc。

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);
}

关于c - 通过超时或使用同一模块中的另一个函数写入其文件描述符来中断选择函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57154081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com