一组程序在其他机器运行都好好的,唯独在作每日集成的服务器上运行就出错,而平台/环境都是一样的,,
why?? 苦思不得其解,,
回家的公交车上脑子还在飞速旋转搜索各种可能的答案,,闭上眼睛,服务器上带着长长的命令行的终端画面又浮现出来,,这么长的命令行,,难道是目录深度过大导致的问题? 再仔细想想,,
不好,那个基于UNIX域套接字的客户端,里面没有对过长的UNIX域套接字路径作异常判断,只是用strncpy做了简单的截断处理;而向客户端程序传递的套接字路径是full path的,目录深度长一些就很可能超出的系统的限制,,
到站下车,回家,打开本本,man 确认: 没错UNIX套接字文件最大目录长度108B,终端长120列,,
怎么办呢?
1、将套接字文件放在一个固定的较浅的目录下比如/etc/xxx/ 或/tmp
2、向客户端程序传递套接字路径时,用相对目录
阅读(1401) | 评论(0) | 转发(0) |