相关疑难解决方法(0)

发送套接字 c ctrl+c 行为

我正在了解一个基于服务器和各种客户端的应用程序,但我在发送命令时遇到问题。每当我在客户端执行ctrl+c操作时,发送操作都会杀死所在的线程和正在运行的进程(为了拥有多个客户端,我将一个线程设置为其中一个)。

如果客户端正确结束(执行关闭套接字),服务器不会死亡,但是当我在客户端上使用ctrl+组合时,两者都会退出。c

我该怎么做才能防止发送命令出现这种行为?

提前致谢

c sockets

5
推荐指数
2
解决办法
2万
查看次数

SIGINT(ctrl + c)不会中断接受调用

在无限循环中,我接受新的连接,但我需要选择停止该服务器,所以我想使用ctrl + c(SIGINT).当我按下它时,它会调用我的信号处理程序,但它不会中断接受调用,因此不会评估是否中断为真(当没有客户端连接时,因此接受阻塞很长时间).

sig_atomic_t interrupt;
.
.
.
signal(SIGINT, sigintHandler);
.
.
.
while(!interrupt) {
  server.accept();
}
.
.
.
void sigintHandler(int param) {
    interrupt = 1;
}
Run Code Online (Sandbox Code Playgroud)

c unix sockets signals

3
推荐指数
1
解决办法
912
查看次数

标签 统计

c ×2

sockets ×2

signals ×1

unix ×1