14-8-28

来源:互联网 发布:linux crontab每秒 编辑:程序博客网 时间:2024/06/06 15:53

1、val = fcntl(server_fd, F_GETFD);
      val |= FD_CLOEXEC; 设置了这个标志:使用execl执行的程序里,此描述符被关闭,不能再使用它,但是在使用fork调用的子进程中,此描述符并不关闭,仍可使用。
      fcntl(server_fd, F_SETFD,val);

      fcntl系统调用可以对(文件)描叙符进行控制,如文件状态、I/O、锁、复制文件描叙符。

2、supertab安装:tab匹配
    下载  http://www.vim.org/scripts/script.php?script_id=1643
    这个安装包跟先前的几个Vim插件不同,它是一个vba文件,即Vimball格式的安装包,这种格式安装包提供傻瓜式的安装插件的方法。
   1、用vim打开.vba安装包文件
   2、在vim命令行下运行命令“UseVimball ~/.vim”。此命令将安装包解压缩到~/.vim目录。
   3、在~/.vimrc文件中加入
   let g:SuperTabDefaultCompletionType="context"
   使用:输入时按tab键

3、socket

     a、正常关闭:被close、shutdown后对方连接的send和recv会马上返回,并报错。

     b、非正常关闭:拔掉网线、断电。对方是接不到信号,send和recv会一直阻塞在那里,这时就需要采取心跳的方式判断(常连接)

    心跳:a、Tcp协议栈中KeepAlive探测  b、TCP连接双方发握手包

    a、缺点:会改变现有的通讯协议

    int keepalive = 1; // 开启keepalive属性
    int keepidle = 60; // 如该连接在60秒内没有任何数据往来,则进行探测
     int keepinterval = 5; // 探测时发包的时间间隔为5 秒
    int keepcount = 3; // 探测尝试的次数.如果第1次探测包就收到响应了,则后2次的不再发.
   setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepalive , sizeof(keepalive ));
   setsockopt(fd, SOL_TCP, TCP_KEEPIDLE, (void*)&keepidle , sizeof(keepidle ));
   setsockopt(fd, SOL_TCP, TCP_KEEPINTVL, (void *)&keepinterval , sizeof(keepinterval ));
   setsockopt(fd, SOL_TCP, TCP_KEEPCNT, (void *)&keepcount , sizeof(keepcount ));

  

 

 

0 0
原创粉丝点击