ÎÒÕýÔÚ¿´¡¶unix»·¾³¸ß¼¶±à³Ì¡·£¬ÔÚ²âÊÔ17Õ½ø³Ì¸ß¼¶Í¨ÐÅÖеÄopen·þÎñÆ÷2ʱ,·¢ÏÖÔÚserv_listenº¯ÊýÖеÄioctl(fd[1],I_PUSH,"connld")Ö´ÐÐʱ£¬×ÜÊÇ·µ»ØÐ¡ÓÚ0µÄÖµ£¬Òò´Ë·þÎñÆ÷¶Ë¸ù±¾½¨²»ÆðÀ´¡£´Ó´íÎóÀàÐÍ¿´£¬Êǵڶþ¡¢Èý¸ö²ÎÊý³öÁËÎÊÌâ¡£µ«ÊµÔÚÊÇÕÒ²»³öÊÇʲôÔÒò´í¡£
ÁíÍâÔÚ±àÒëʱ£¬×ÜÊǾ¯¸æËµfattachº¯ÊýûÓÐimplemented£¬²»ÖªµÀÔõô»ØÊÂ,¸Ð¾õÒѾ°Ñ´ó¶àÊýÍ·ÎļþincludeÁË¡£
±¾ÈË»¹ÊDzËÄñ£¬ÔÚÍøÉÏËÑË÷ÁËһϣ¬ÎÊÕâ¸öÎÊÌâµÄÈË»¹Í¦¶àµÄ£¬¾ÍÊÇûÈ˻شð£¬Çë¸ßÊÖÏàÖú,¸Ð¼¤²»¾¡£¡£¡£¡
ÒÔÏÂÊÇÊéÉϸøµÄ´úÂ룺
******************************************************************
#include "apue.h"
#include
#include
/* pipe permissions: user rw, group rw, others rw */
#define FIFO_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
/*
* Establish an endpoint to listen for connect requests.
* Returns fd if all OK, <0 on error
*/
int
serv_listen(const char *name)
{
int tempfd;
int fd[2];
/*
* Create a file: mount point for fattach().
*/
unlink(name);
if ((tempfd = creat(name, FIFO_MODE)) < 0)
return(-1);
if (close(tempfd) < 0)
return(-2);
if (pipe(fd) < 0)
return(-3);
/*
* Push connld & fattach() on fd[1].
*/
if (ioctl(fd[1], I_PUSH, "connld") < 0) { /*¾ÍÊÇÕâ¾äÓÐÎÊÌ⣡£¡*/
close(fd[0]);
close(fd[1]);
return(-4);
}
if (fattach(fd[1], name) < 0) {
close(fd[0]);
close(fd[1]);
return(-5);
}
close(fd[1]); /* fattach holds this end open */
return(fd[0]); /* fd[0] is where client connections arrive */
}
******************************************************************
sunkien ÓÚ 2010-08-02 15:02:01·¢±í:
²»ÊǸßÊ־ͰïÖú¶¥
gujingyu ÓÚ 2010-07-12 21:09:21·¢±í:
ÊÔÊÔ4.3BSDµÄÔ´Âë°É ¹À¼ÆÄãµÄϵͳ²»Ö§³ÖSVR4±ê×¼°É
qq274255093 ÓÚ 2009-05-08 13:09:44·¢±í:
¸ßÊÖÔÚÄÄÀï°¡£¿£¿
qq274255093 ÓÚ 2009-05-05 20:12:05·¢±í:
{:2_91:}×Ô¼º¶¥
qq274255093 ÓÚ 2009-05-05 19:59:04·¢±í:
¸ßÊÖÔÚÄÄÀï°¡£¿£¿
qq274255093 ÓÚ 2009-05-04 12:55:35·¢±í:
´óÏÀÃÇ£¬À´¿´¿´°É
ufnhliou ÓÚ 2009-05-03 16:34:01·¢±í:
ÎÒ²»ÊǸßÊÖ
qq274255093 ÓÚ 2009-05-03 16:19:06·¢±í:
¸ßÊÖÔÚÄÄÀï°¡£¿£¿{:2_98:}