⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 request.c

📁 该代码为unix环境高级编程的源代码
💻 C
字号:
#include	"calld.h"int							/* return 0 if OK, -1 on error */request(Client *cliptr){	pid_t	pid;	errmsg[0] = 0;		/* position where this client left off last (or rewind) */	sys_posn(cliptr->sysftell);	while ( (cliptr->sysftell = sys_next(&systems)) >= 0) {		if (strcmp(cliptr->sysname, systems.name) == 0) {					/* system match */				/* if client specified a speed, it must match too */			if (cliptr->speed[0] != 0 &&				strcmp(cliptr->speed, systems.class) != 0)					continue;	/* speeds don't match */			DEBUG("trying sys: %s, %s, %s, %s", systems.name,					systems.type, systems.class, systems.phone);			cliptr->foundone++;			if (dev_find(&devices, &systems) < 0)				break;			DEBUG("trying dev: %s, %s, %s, %s", devices.type,					devices.line, devices.class, devices.dialer);			if ( (pid = is_locked(devices.line)) != 0) {				sprintf(errmsg, "device `%s' already locked by pid %d\n",													devices.line, pid);				continue;	/* look for another entry in Systems file */			}				/* We've found a device that's not locked.				   fork() a child to to the actual dialing. */			TELL_WAIT();			if ( (cliptr->pid = fork()) < 0)				log_sys("fork error");			else if (cliptr->pid == 0) {	/* child */				WAIT_PARENT();		/* let parent set lock */				child_dial(cliptr);	/* never returns */			}			/* parent */			lock_set(devices.line, cliptr->pid);					/* let child resume, now that lock is set */			TELL_CHILD(cliptr->pid);			return(0);	/* we've started a child */		}	}	/* reached EOF on Systems file */	if (cliptr->foundone == 0)		sprintf(errmsg, "system `%s' not found\n", cliptr->sysname);	else if (errmsg[0] == 0)		sprintf(errmsg, "unable to connect to system `%s'\n",												 cliptr->sysname);	return(-1);		/* also, cliptr->sysftell is -1 */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -