欢迎使用CSDN-markdown编辑器

来源:互联网 发布:windows rt能换系统吗 编辑:程序博客网 时间:2024/04/29 03:48

unix domain socket通信

1.unix domain socket的一个黑魔法

    在使用unix domain socket通信的时候,需要指定一个文件名,但是直接使用一个知名文件的话,则会有一个问题,句柄泄露,可能因为程序异常退出,可能受到信号被杀死等。    这个时候,使用一个黑魔法,即在指定文件名的时候,第一个字节赋值为'\0',从第二个开始赋值,则能创建出来一个虚拟的文件,文件系统中没有与之对应的尸体文件名,如下:    //server    sockaddr_un addr;    addr.sun_path[0] = '\0';    snprintf(&addr.sun_path[1], sizeof(addr.sun_path)-2, path);    ...    bind();    ...    与之对应,client代码如下    sockaddr_un addr;    addr.sun_path[0] = '\0';    snprintf(&addr.sun_path[1], sizeof(addr.sun_path)-2, path);    ...    connect();    ...这样在文件系统中是没有这个文件存在的,但是却又可以成功。参考:man 7 unix

2.glibc和kernel与之对应的处理

这个暂时不做了解,有空再说。。。涉及 glibc 系统调用  文件系统
0 0
原创粉丝点击