相关疑难解决方法(0)

使用SO_REUSEADDR - 以前打开套接字会发生什么?

在unix的网络编程中,我总是在服务器用来侦听连接的套接字上设置SO_REUSEADDR选项.这基本上说可以在机器上的同一端口上打开另一个套接字.这在从崩溃中恢复并且套接字未正确关闭时非常有用 - 应用程序可以重新启动,它只需在同一端口上打开另一个套接字并继续监听.

我的问题是,旧套接字会发生什么?毫无疑问,仍将在旧套接字上接收所有数据/连接.它会被操作系统自动关闭吗?

c unix network-programming

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

c/linux无限循环应用程序:如果调用kill -9命令,则释放内存

我在linux中开发了一个包含无限循环的C应用程序while(1).但是也有一些动态分配的,并且是无限循环下一些有用的指针,所以释放内存的唯一时间是在中断后while(1)通过ctrl-z,ctrl-c,kill -9 apppid,killall appname.所以我的想法是将新的处理程序与内存事件信号解除关联.

void deallocatehandler(int signal){ printf("Memory Deallocation\n"); exit(0);}

int main(){
    signal(SIGINT, &deallocatehandler);
    signal(SIGTSTP, &deallocatehandler);
    signal(SIGKILL, &deallocatehandler);

    while(1){
        /**
        Some code here
        **/
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我按ctrl-c或ctrl-z调用处理程序,但问题出在SIGKILL上.命令kill -9killall没有启动处理程序.

有人知道为什么吗?是否有建议纠正它?

c linux free memory-management sigkill

4
推荐指数
1
解决办法
540
查看次数

标签 统计

c ×2

free ×1

linux ×1

memory-management ×1

network-programming ×1

sigkill ×1

unix ×1