gpt4 book ai didi

c++ - 使用 socket recv 函数读取 stdin 上的流

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:39 24 4
gpt4 key购买 nike

我可以使用 socket recv 函数来读取 stdin 的输入流吗?即阅读 Ctrl-C。

喜欢。

int dummy;

ssize_t bytes = recv (0 /* file descriptor for stdin*/ , &dummy, 1, MSG_PEEK);

if (bytes > 0 && dummy == 0x03)
return true; // Ctrl-C receive
else
return false; // Not

实际上,我正在通过使用 fgetc 函数通知 CTRL-C 来读取标准输入流,但有时 fgetc 不会通知任何 CTRL-C。如果我将 recv 函数用作与 fgetc 函数的析取,则将处理所有通知 CRTL-C 的情况。

那么我可以使用 socket recv 函数来读取标准输入流吗?这是我用于通知 CRTL-C 事件的完整算法。

ssize_t bytes = recv (data->input, &dummy, 1, MSG_PEEK);

dummy1 = fgetc (stdin)

if ((dummy1 == 0x03) || (bytes > 0 && dummy == 0x03))
return true;
else
return false;

最佳答案

不,您不能在非套接字上使用 recv(至少,不可移植或不常用)。 FWIW,在某些系统上,selectpoll 可用于监视非套接字,包括 I/O 事件的标准输入,并且可以跨套接字和其他方式使用读/写流,但 recv/send 是 Berkeley Sockets API 标准的一部分用于套接字

Control-C 通常会生成一个信号(特别是 SIGINT),您可以为其注册一个信号处理程序,但细节因操作系统而异。参见例如this answer .

关于c++ - 使用 socket recv 函数读取 stdin 上的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641331/

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