亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wrapunix.c

?? 這是unix網絡編程一書的源代碼希望能對大家的學習提供一種便利
?? C
字號:
/*
 * Socket wrapper functions.
 * These could all go into separate files, so only the ones needed cause
 * the corresponding function to be added to the executable.  If sockets
 * are a library (SVR4) this might make a difference (?), but if sockets
 * are in the kernel (BSD) it doesn't matter.
 *
 * These wrapper functions also use the same prototypes as POSIX.1g,
 * which might differ from many implementations (i.e., POSIX.1g specifies
 * the fourth argument to getsockopt() as "void *", not "char *").
 *
 * If your system's headers are not correct [i.e., the Solaris 2.5
 * <sys/socket.h> omits the "const" from the second argument to both
 * bind() and connect()], you'll get warnings of the form:
 *warning: passing arg 2 of `bind' discards `const' from pointer target type
 *warning: passing arg 2 of `connect' discards `const' from pointer target type
 */

#include	"unpipc.h"

#include	<stdarg.h>		/* for variable arg lists */

void *
Calloc(size_t n, size_t size)
{
	void	*ptr;

	if ( (ptr = calloc(n, size)) == NULL)
		err_sys("calloc error");
	return(ptr);
}

/* include Close */
void
Close(int fd)
{
	if (close(fd) == -1)
		err_sys("close error");
}
/* end Close */

void
Dup2(int fd1, int fd2)
{
	if (dup2(fd1, fd2) == -1)
		err_sys("dup2 error");
}

#ifdef	HAVE_FATTACH
void
Fattach(int fd, const char *path)
{
	if (fattach(fd, path) == -1)
		err_sys("fattach error");
}
#endif

int
Fcntl(int fd, int cmd, void *arg)
{
	int	n;

	if ( (n = fcntl(fd, cmd, arg)) == -1)
		err_sys("fcntl error");
	return(n);
}

pid_t
Fork(void)
{
	pid_t	pid;

	if ( (pid = fork()) == -1)
		err_sys("fork error");
	return(pid);
}

long
Fpathconf(int fd, int name)
{
	long	val;

	errno = 0;		/* in case fpathconf() does not change this */
	if ( (val = fpathconf(fd, name)) == -1) {
		if (errno != 0)
			err_sys("fpathconf error");
		else
			err_sys("fpathconf: %d not defined", name);
	}
	return(val);
}

void
Fstat(int fd, struct stat *ptr)
{
	if (fstat(fd, ptr) == -1)
		err_sys("fstat error");
}

#ifdef	HAVE_SYS_IPC_H
key_t
Ftok(const char *pathname, int id)
{
	key_t	key;

	if ( (key = ftok(pathname, id)) == -1)
		err_sys("ftok error for pathname \"%s\" and id %d", pathname, id);
	return(key);
}
#endif	/* HAVE_SYS_IPC_H */

void
Ftruncate(int fd, off_t length)
{
	if (ftruncate(fd, length) == -1)
		err_sys("ftruncate error");
}

int
Getopt(int argc, char *const *argv, const char *str)
{
	int		opt;

	if ( ( opt = getopt(argc, argv, str)) == '?')
		exit(1);		/* getopt() has already written to stderr */
	return(opt);
}

void
Gettimeofday(struct timeval *tv, void *foo)
{
	if (gettimeofday(tv, foo) == -1)
		err_sys("gettimeofday error");
	return;
}

int
Ioctl(int fd, int request, void *arg)
{
	int		n;

	if ( (n = ioctl(fd, request, arg)) == -1)
		err_sys("ioctl error");
	return(n);	/* streamio of I_LIST returns value */
}

void
Kill(pid_t pid, int signo)
{
	if (kill(pid, signo) == -1)
		err_sys("kill error");
}

off_t
Lseek(int fd, off_t offset, int whence)
{
	off_t	pos;

	if ( (pos = lseek(fd, offset, whence)) == (off_t) -1)
		err_sys("lseek error");
	return(pos);
}

void *
Malloc(size_t size)
{
	void	*ptr;

	if ( (ptr = malloc(size)) == NULL)
		err_sys("malloc error");
	return(ptr);
}

void
Mkfifo(const char *pathname, mode_t mode)
{
	if (mkfifo(pathname, mode) == -1)
		err_sys("mkfifo error for %s", pathname);
}

void
Mktemp(char *template)
{
	if (mktemp(template) == NULL || template[0] == 0)
		err_quit("mktemp error");
}

#ifdef	HAVE_SYS_MMAN_H

void *
Mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)
{
	void	*ptr;

	if ( (ptr = mmap(addr, len, prot, flags, fd, offset)) == MAP_FAILED)
		err_sys("mmap error");
	return(ptr);
}

void
Munmap(void *addr, size_t len)
{
	if (munmap(addr, len) == -1)
		err_sys("munmap error");
}
#endif	/* HAVE_SYS_MMAN_H */

#ifdef	HAVE_MQUEUE_H

mqd_t
Mq_open(const char *pathname, int oflag, ...)
{
	mqd_t	mqd;
	va_list	ap;
	mode_t	mode;
	struct mq_attr	*attr;

	if (oflag & O_CREAT) {
		va_start(ap, oflag);		/* init ap to final named argument */
		mode = va_arg(ap, va_mode_t);
		attr = va_arg(ap, struct mq_attr *);
		if ( (mqd = mq_open(pathname, oflag, mode, attr)) == (mqd_t) -1)
			err_sys("mq_open error for %s", pathname);
		va_end(ap);
	} else {
		if ( (mqd = mq_open(pathname, oflag)) == (mqd_t) -1)
			err_sys("mq_open error for %s", pathname);
	}
	return(mqd);
}

void
Mq_close(mqd_t mqd)
{
	if (mq_close(mqd) == -1)
		err_sys("mq_close error");
}

void
Mq_unlink(const char *pathname)
{
	if (mq_unlink(pathname) == -1)
		err_sys("mq_unlink error");
}

void
Mq_send(mqd_t mqd, const char *ptr, size_t len, unsigned int prio)
{
	if (mq_send(mqd, ptr, len, prio) == -1)
		err_sys("mq_send error");
}

ssize_t
Mq_receive(mqd_t mqd, char *ptr, size_t len, unsigned int *prio)
{
	ssize_t	n;

	if ( (n = mq_receive(mqd, ptr, len, prio)) == -1)
		err_sys("mq_receive error");
	return(n);
}

void
Mq_notify(mqd_t mqd, const struct sigevent *notification)
{
	if (mq_notify(mqd, notification) == -1)
		err_sys("mq_notify error");
}

void
Mq_getattr(mqd_t mqd, struct mq_attr *mqstat)
{
	if (mq_getattr(mqd, mqstat) == -1)
		err_sys("mq_getattr error");
}

void
Mq_setattr(mqd_t mqd, const struct mq_attr *mqstat, struct mq_attr *omqstat)
{
	if (mq_setattr(mqd, mqstat, omqstat) == -1)
		err_sys("mq_setattr error");
}
#endif	/* HAVE_SYS_MSG_H */

#ifdef	HAVE_SYS_MSG_H
int
Msgget(key_t key, int flag)
{
	int		rc;

	if ( (rc = msgget(key, flag)) == -1)
		err_sys("msgget error");
	return(rc);
}

void
Msgctl(int id, int cmd, struct msqid_ds *buf)
{
	if (msgctl(id, cmd, buf) == -1)
		err_sys("msgctl error");
}

void
Msgsnd(int id, const void *ptr, size_t len, int flag)
{
	if (msgsnd(id, ptr, len, flag) == -1)
		err_sys("msgsnd error");
}

ssize_t
Msgrcv(int id, void *ptr, size_t len, int type, int flag)
{
	ssize_t	rc;

	if ( (rc = msgrcv(id, ptr, len, type, flag)) == -1)
		err_sys("msgrcv error");
	return(rc);
}
#endif	/* HAVE_SYS_MSG_H */

int
Open(const char *pathname, int oflag, ...)
{
	int		fd;
	va_list	ap;
	mode_t	mode;

	if (oflag & O_CREAT) {
		va_start(ap, oflag);		/* init ap to final named argument */
		mode = va_arg(ap, va_mode_t);
		if ( (fd = open(pathname, oflag, mode)) == -1)
			err_sys("open error for %s", pathname);
		va_end(ap);
	} else {
		if ( (fd = open(pathname, oflag)) == -1)
			err_sys("open error for %s", pathname);
	}
	return(fd);
}

long
Pathconf(const char *pathname, int name)
{
	long	val;

	errno = 0;		/* in case pathconf() does not change this */
	if ( (val = pathconf(pathname, name)) == -1) {
		if (errno != 0)
			err_sys("pathconf error");
		else
			err_sys("pathconf: %d not defined", name);
	}
	return(val);
}

void
Pipe(int *fds)
{
	if (pipe(fds) < 0)
		err_sys("pipe error");
}

ssize_t
Read(int fd, void *ptr, size_t nbytes)
{
	ssize_t		n;

	if ( (n = read(fd, ptr, nbytes)) == -1)
		err_sys("read error");
	return(n);
}

/* include Select */
int
Select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
       struct timeval *timeout)
{
	int		n;

again:
	if ( (n = select(nfds, readfds, writefds, exceptfds, timeout)) < 0) {
		if (errno == EINTR)
			goto again;
		else
			err_sys("select error");
	} else if (n == 0 && timeout == NULL)
		err_quit("select returned 0 with no timeout");
	return(n);		/* can return 0 on timeout */
}
/* end Select */

#ifdef	HAVE_SEMAPHORE_H

sem_t *
Sem_open(const char *pathname, int oflag, ...)
{
	sem_t	*sem;
	va_list	ap;
	mode_t	mode;
	unsigned int	value;

	if (oflag & O_CREAT) {
		va_start(ap, oflag);		/* init ap to final named argument */
		mode = va_arg(ap, va_mode_t);
		value = va_arg(ap, unsigned int);
		if ( (sem = sem_open(pathname, oflag, mode, value)) == SEM_FAILED)
			err_sys("sem_open error for %s", pathname);
		va_end(ap);
	} else {
		if ( (sem = sem_open(pathname, oflag)) == SEM_FAILED)
			err_sys("sem_open error for %s", pathname);
	}
	return(sem);
}

void
Sem_close(sem_t *sem)
{
	if (sem_close(sem) == -1)
		err_sys("sem_close error");
}

void
Sem_unlink(const char *pathname)
{
	if (sem_unlink(pathname) == -1)
		err_sys("sem_unlink error");
}

void
Sem_init(sem_t *sem, int pshared, unsigned int value)
{
	if (sem_init(sem, pshared, value) == -1)
		err_sys("sem_init error");
}

void
Sem_destroy(sem_t *sem)
{
	if (sem_destroy(sem) == -1)
		err_sys("sem_destroy error");
}

void
Sem_wait(sem_t *sem)
{
	if (sem_wait(sem) == -1)
		err_sys("sem_wait error");
}

int
Sem_trywait(sem_t *sem)
{
	int		rc;

	if ( (rc = sem_trywait(sem)) == -1 && errno != EAGAIN)
		err_sys("sem_trywait error");
	return(rc);
}

/* include Sem_post */
void
Sem_post(sem_t *sem)
{
	if (sem_post(sem) == -1)
		err_sys("sem_post error");
}
/* end Sem_post */

void
Sem_getvalue(sem_t *sem, int *valp)
{
	if (sem_getvalue(sem, valp) == -1)
		err_sys("sem_getvalue error");
}

#endif	/* HAVE_SEMAPHORE_H */

#ifdef	HAVE_SYS_SEM_H
int
Semget(key_t key, int nsems, int flag)
{
	int		rc;

	if ( (rc = semget(key, nsems, flag)) == -1)
		err_sys("semget error");
	return(rc);
}

void
Semop(int id, struct sembuf *opsptr, size_t nops)
{
	if (semop(id, opsptr, nops) == -1)
		err_sys("semctl error");
}

int
Semctl(int id, int semnum, int cmd, ...)
{
	int		rc;
	va_list	ap;
	union semun	arg;

	if (cmd == GETALL || cmd == SETALL || cmd == SETVAL ||
		cmd == IPC_STAT || cmd == IPC_SET) {
		va_start(ap, cmd);		/* init ap to final named argument */
		arg = va_arg(ap, union semun);
		if ( (rc = semctl(id, semnum, cmd, arg)) == -1)
			err_sys("semctl error");
		va_end(ap);
	} else {
		if ( (rc = semctl(id, semnum, cmd)) == -1)
			err_sys("semctl error");
	}
	return(rc);
}

#endif	/* HAVE_SYS_SEM_H */

#ifdef	HAVE_SHM_OPEN_PROTO

int
Shm_open(const char *pathname, int oflag, mode_t mode)
{
	int		fd;

	if ( (fd = shm_open(pathname, oflag, mode)) == -1)
		err_sys("shm_open error for %s", pathname);
	return(fd);
}


void
Shm_unlink(const char *pathname)
{
	if (shm_unlink(pathname) == -1)
		err_sys("shm_unlink error");
}

#endif	/* HAVE_SHM_OPEN_PROTO */

#ifdef	HAVE_SYS_SHM_H

int
Shmget(key_t key, size_t size, int flags)
{
	int		rc;

	if ( (rc = shmget(key, size, flags)) == -1)
		err_sys("shmget error");
	return(rc);
}

void *
Shmat(int id, const void *shmaddr, int flags)
{
	void	*ptr;

	if ( (ptr = shmat(id, shmaddr, flags)) == (void *) -1)
		err_sys("shmat error");
	return(ptr);
}

void
Shmdt(const void *shmaddr)
{
	if (shmdt(shmaddr) == -1)
		err_sys("shmdt error");
}

void
Shmctl(int id, int cmd, struct shmid_ds *buff)
{
	if (shmctl(id, cmd, buff) == -1)
		err_sys("shmctl error");
}

#endif	/* HAVE_SYS_SHM_H */

void
Sigaddset(sigset_t *set, int signo)
{
	if (sigaddset(set, signo) == -1)
		err_sys("sigaddset error");
}

void
Sigdelset(sigset_t *set, int signo)
{
	if (sigdelset(set, signo) == -1)
		err_sys("sigdelset error");
}

void
Sigemptyset(sigset_t *set)
{
	if (sigemptyset(set) == -1)
		err_sys("sigemptyset error");
}

void
Sigfillset(sigset_t *set)
{
	if (sigfillset(set) == -1)
		err_sys("sigfillset error");
}

int
Sigismember(const sigset_t *set, int signo)
{
	int		n;

	if ( (n = sigismember(set, signo)) == -1)
		err_sys("sigismember error");
	return(n);
}

void
Sigpending(sigset_t *set)
{
	if (sigpending(set) == -1)
		err_sys("sigpending error");
}

void
Sigprocmask(int how, const sigset_t *set, sigset_t *oset)
{
	if (sigprocmask(how, set, oset) == -1)
		err_sys("sigprocmask error");
}

#ifdef	HAVE_SIGINFO_T_STRUCT
void
Sigqueue(pid_t pid, int signo, const union sigval val)
{
	if (sigqueue(pid, signo, val) == -1)
		err_sys("sigqueue error");
}
#endif

#ifdef	HAVE_SIGWAIT
void
Sigwait(const sigset_t *set, int *signo)
{
	int		n;

	if ( (n = sigwait(set, signo)) == 0)
		return;
	errno = n;
	err_sys("sigwait error");
}
#endif

void
Stat(const char *pathname, struct stat *ptr)
{
	if (stat(pathname, ptr) == -1)
		err_sys("stat error");
}

char *
Strdup(const char *str)
{
	char	*ptr;

	if ( (ptr = strdup(str)) == NULL)
		err_sys("strdup error");
	return(ptr);
}

long
Sysconf(int name)
{
	long	val;

	errno = 0;		/* in case sysconf() does not change this */
	if ( (val = sysconf(name)) == -1) {
		if (errno != 0)
			err_sys("sysconf error");
		else
			err_sys("sysconf: %d not defined", name);
	}
	return(val);
}

#ifdef	HAVE_SYS_SYSCTL_H

#include	<sys/param.h>
#include	<sys/sysctl.h>

void
Sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp,
	   void *newp, size_t newlen)
{
	if (sysctl(name, namelen, oldp, oldlenp, newp, newlen) == -1)
		err_sys("sysctl error");
}
#endif

void
Unlink(const char *pathname)
{
	if (unlink(pathname) == -1)
		err_sys("unlink error for %s", pathname);
}

void *
Valloc(size_t size)
{
	void	*ptr;

#ifdef	HAVE_VALLOC
	if ( (ptr = valloc(size)) == NULL)
		err_sys("valloc error");
#else
	if ( (ptr = malloc(size)) == NULL)
		err_sys("malloc error (Valloc)");
#endif
	return(ptr);
}

pid_t
Wait(int *iptr)
{
	pid_t	pid;

	if ( (pid = wait(iptr)) == -1)
		err_sys("wait error");
	return(pid);
}

pid_t
Waitpid(pid_t pid, int *iptr, int options)
{
	pid_t	retpid;

	if ( (retpid = waitpid(pid, iptr, options)) == -1)
		err_sys("waitpid error");
	return(retpid);
}

void
Write(int fd, void *ptr, size_t nbytes)
{
	if (write(fd, ptr, nbytes) != nbytes)
		err_sys("write error");
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品综合小说图片区| 国产v日产∨综合v精品视频| 久久综合一区二区| 欧美日韩在线观看一区二区| 成人av电影观看| 成熟亚洲日本毛茸茸凸凹| 国产美女久久久久| 久久www免费人成看片高清| 奇米四色…亚洲| 蜜臀av一区二区在线免费观看| 日韩电影免费在线看| 蜜臀精品一区二区三区在线观看| 人人爽香蕉精品| 激情久久五月天| 狠狠色狠狠色合久久伊人| 国产在线观看一区二区| 丁香啪啪综合成人亚洲小说| 97久久精品人人澡人人爽| av一区二区不卡| 日本高清视频一区二区| 欧美日韩成人在线一区| 欧美一区二区福利视频| xvideos.蜜桃一区二区| 中文字幕亚洲一区二区va在线| 国产精品国产三级国产普通话蜜臀| 中文字幕日韩欧美一区二区三区| 亚洲在线视频一区| 乱中年女人伦av一区二区| 国产99久久久精品| 日本道精品一区二区三区| 欧美疯狂性受xxxxx喷水图片| 日韩三级视频在线看| 国产日产欧美一区二区视频| 一区二区三区在线影院| 人人精品人人爱| aaa欧美色吧激情视频| 欧美日韩一区二区在线观看视频 | 色婷婷综合久久久中文字幕| 欧美日韩精品福利| 国产亚洲精品超碰| 亚洲永久精品大片| 国产传媒一区在线| 欧美三级电影网| 欧美国产欧美综合| 亚洲bt欧美bt精品| 成人免费不卡视频| 日韩精品综合一本久道在线视频| 国产精品国产三级国产普通话99| 天堂在线亚洲视频| 91婷婷韩国欧美一区二区| 日韩欧美激情在线| 亚洲综合图片区| 不卡一区二区在线| 精品欧美一区二区久久| 亚洲午夜精品在线| av成人老司机| 久久精品夜夜夜夜久久| 日韩专区欧美专区| 91精品福利视频| 中文字幕 久热精品 视频在线| 美女精品一区二区| 欧美日韩国产成人在线91| 亚洲欧美日韩国产手机在线 | 色天天综合久久久久综合片| 久久久亚洲精华液精华液精华液| 视频在线观看一区二区三区| 91视频在线观看| 国产精品久久久久永久免费观看| 久久丁香综合五月国产三级网站| 欧美日韩一区小说| 亚洲综合激情另类小说区| 菠萝蜜视频在线观看一区| 欧美成人在线直播| 精品一区二区三区影院在线午夜| 在线播放欧美女士性生活| 亚洲图片欧美视频| 欧美在线观看18| 亚洲电影在线免费观看| 欧美日韩一本到| 日韩一区在线播放| 97久久超碰国产精品| 国产精品另类一区| 不卡av免费在线观看| 亚洲精品成a人| 欧美综合亚洲图片综合区| 亚洲欧美偷拍卡通变态| 色久综合一二码| 亚洲午夜精品17c| 欧美精品123区| 激情成人综合网| 国产亚洲女人久久久久毛片| www.激情成人| 亚洲一区二区影院| 9191成人精品久久| 久久国产日韩欧美精品| 国产午夜精品一区二区| 99国内精品久久| 亚洲一二三四久久| 日韩欧美不卡一区| 国产风韵犹存在线视精品| 中文字幕一区二区三区不卡在线| 99re这里都是精品| 三级久久三级久久久| 久久网这里都是精品| av高清不卡在线| 青青草原综合久久大伊人精品| 2020国产精品自拍| 日本韩国精品一区二区在线观看| 日本欧美一区二区三区乱码| 国产日本一区二区| 欧美中文字幕一区二区三区| 麻豆成人在线观看| 国产精品动漫网站| 日韩无一区二区| 99久久99久久精品免费观看| 日本成人中文字幕在线视频| 欧美激情自拍偷拍| 69久久夜色精品国产69蝌蚪网| 国产精品资源在线观看| 亚洲午夜精品一区二区三区他趣| 欧美日本免费一区二区三区| 久久99国产精品久久99| 一区二区欧美国产| 久久久精品国产99久久精品芒果| 欧美午夜精品免费| 久久疯狂做爰流白浆xx| 亚洲一区二区av在线| 国产日韩成人精品| 欧美成人一区二区| 欧美狂野另类xxxxoooo| 成人国产精品免费观看视频| 麻豆国产精品一区二区三区| 一区二区三区加勒比av| 中文字幕av一区二区三区| 精品福利av导航| 欧美一区二区在线视频| 91九色最新地址| 99精品热视频| 成人网男人的天堂| 精品亚洲国内自在自线福利| 亚洲bt欧美bt精品777| 亚洲永久免费视频| 一区二区三区不卡在线观看| 中文字幕一区二区三区四区不卡| 国产亚洲视频系列| 精品粉嫩超白一线天av| 日韩精品一区二区三区老鸭窝| 欧美久久久久久久久| 在线看国产一区二区| 91亚洲精华国产精华精华液| 粉嫩高潮美女一区二区三区| 国产一区二区三区美女| 国产美女精品人人做人人爽| 精品亚洲成a人| 国内国产精品久久| 寂寞少妇一区二区三区| 久久国产麻豆精品| 麻豆91在线看| 国模套图日韩精品一区二区| 久久99国内精品| 国产一区在线看| 国产精品一二三区| 国产99久久久国产精品| 成人免费视频网站在线观看| 成人黄色777网| 色猫猫国产区一区二在线视频| 日本丰满少妇一区二区三区| 91黄色激情网站| 51精品秘密在线观看| 日韩三级精品电影久久久| 精品免费一区二区三区| 久久久久久久综合色一本| 日本一区二区综合亚洲| 亚洲欧美aⅴ...| 午夜精品福利一区二区蜜股av | 26uuu精品一区二区三区四区在线| 欧美成人福利视频| 国产精品三级av| 亚洲你懂的在线视频| 香蕉成人啪国产精品视频综合网| 青草av.久久免费一区| 国产精品99久久久久久有的能看| 成人美女视频在线观看| 欧美性大战久久久久久久蜜臀| 91精品国产91热久久久做人人 | 成人久久18免费网站麻豆 | 国产综合一区二区| 99国产精品久久久| 欧美色图免费看| 久久久久久影视| 一区二区三区91| 国产精品影音先锋| 欧美性高清videossexo| 国产性做久久久久久| 亚洲图片欧美一区| 成人看片黄a免费看在线| 91精品婷婷国产综合久久竹菊| 久久精品视频网| 亚洲va国产天堂va久久en| 国产一区免费电影|