Tag: 阻止

套接字:什么导致read()返回EINVAL?

套接字客户端程序与服务器建立连接,写入一些字节并使用(阻塞) read()等待响应。 但这失败了,错误是EINVAL (“无效参数”)。 以前对socket create() , bind()和connect()的调用已成功完成。 我的问题 这有什么不对? 平台是Linux x64。

如何阻止C中的信号?

我正在尝试创建一个阻止信号SIGUSR1的程序,它会解锁信号。 在中间,我想看到使用sigpending阻止信号。 但它总是说信号没有被阻挡,我可以在信号被阻挡时使用它。 这是我的代码。 #include #include #include static void signals(int signaln) { switch (signaln) { case SIGUSR1: printf(“Signal SIGUSR1\n”); break; } return; } main() { sigset_t set,set2; struct sigaction sigs; sigs.sa_handler = signals; sigemptyset(&sigs.sa_mask); sigs.sa_flags=SA_ONESHOT; sigaction(SIGUSR1, &sigs,0); sigemptyset(&set); sigemptyset(&set2); sigaddset(&set,SIGUSR1); if(sigprocmask(SIG_BLOCK, &set, NULL)==0){ printf(“Blocking SISGUSR1…\n”); } sigpending(&set2); if (sigismember(&set2,SIGUSR1)==1) { printf(“The signal is blocked\n”); //it […]

如何中止winsock阻塞调用?

我在C ++中使用Winsock 2,并想知道如何使我的服务器停止从客户端连接读取。 阅读线程在recv()被阻止,我不知道如何中止它。 一种方法是使用带有select()的非阻塞套接字,但是这个线程必须在检查新的select()之前等待。 什么是停止读取sockets的正确方法?

如何将套接字重置为阻塞模式(在我将其设置为非阻塞模式后)?

关于将套接字设置为非阻塞模式,我已经读过这个。 http://www.gnu.org/software/libc/manual/html_mono/libc.html#File-Status-Flags 这是我做的: static void setnonblocking(int sock) { int opts; opts = fcntl(sock,F_GETFL); if (opts < 0) { perror("fcntl(F_GETFL)"); exit(EXIT_FAILURE); } opts = (opts | O_NONBLOCK); if (fcntl(sock,F_SETFL,opts) < 0) { perror("fcntl(F_SETFL)"); exit(EXIT_FAILURE); } return; } 如何将套接字设置回阻止模式? 我没有看到O_BLOCK标志? 谢谢。