/* 要点:sockaddr_un
* 功能:监听UNIX域socket
* 成功:返回新生成的套接字文件描述符
* 失败:返回-1
*/
int std_listen_unix(const char *socketfile)
{
int fd = 0, len = 0, operate_ret = OPERATE_SUCCESS;
struct sockaddr_un serv;
if((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
{
STD_DEBUG_PRINT("socket failed! %s\n", strerror(errno));
operate_ret = OPERATE_FAILED;
goto ret_lable;
}
unlink(socketfile); /***********************/
len = strlen(socketfile);
if(len > 107)
{
DEBUG_PRINT ("socket file len is too long!");
operate_ret = OPERATE_FAILED;
goto ret_lable;
}
memset (&serv, 0, sizeof(serv));
serv.sun_family = AF_UNIX;
strncpy (serv.sun_path, socketfile, len);
len += offsetof(struct sockaddr_un, sun_path); /**********/
if(bind(fd, (struct sockaddr *)&serv, len) < 0)
{
DEB
sockaddr_un实例--监听与连接UNIX域socket
最新推荐文章于 2024-10-04 07:30:00 发布