您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ FD_CLR函数代码示例

51自学网 2021-06-01 20:40:52
  C++
这篇教程C++ FD_CLR函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中FD_CLR函数的典型用法代码示例。如果您正苦于以下问题:C++ FD_CLR函数的具体用法?C++ FD_CLR怎么用?C++ FD_CLR使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了FD_CLR函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: main

int main(){	int server_sockfd, client_sockfd;	int server_len, client_len;	struct sockaddr_in server_address;	struct sockaddr_in client_address;	int result;	fd_set readfds, testfds;	server_sockfd = socket(AF_INET, SOCK_STREAM, 0);	server_address.sin_family = AF_INET;	server_address.sin_addr.s_addr = INADDR_ANY;	server_address.sin_port = htons(9734);	server_len = sizeof(server_address);	bind(server_sockfd, (struct sockaddr *)&server_address, server_len);	listen(server_sockfd, 5);	FD_ZERO(&readfds);	FD_SET(server_sockfd, &readfds);	while (1) {		char ch;		int fd;		int nread;		testfds = readfds;		printf("server waiting/n");		result = select(FD_SETSIZE, &testfds, (fd_set *)0,				        (fd_set *)0, (struct timeval *)0);		if (result < 1) {			perror("server5");			exit(1);		}		for (fd = 0; fd < FD_SETSIZE; fd++) {			if (FD_ISSET(fd, &testfds)) {				if (fd == server_sockfd) {					client_len = sizeof(client_address);					client_sockfd = accept(server_sockfd,							(struct sockaddr *)&client_address, &client_len);					FD_SET(client_sockfd, &readfds);					printf("add client on fd %d/n", client_sockfd);				} else {					ioctl(fd, FIONREAD, &nread);					if (nread == 0) {						close(fd);						FD_CLR(fd, &readfds);						printf("removing client on fd %d/n", fd);					} else {						read(fd, &ch, 1);						sleep(5);						printf("serving client on fd %d/n", fd);						ch++;						write(fd, &ch, 1);					}				}			}		}	}}
开发者ID:chenjianlong,项目名称:books-code,代码行数:65,


示例2: FCPPT_ASSERT

//.........这里部分代码省略.........		out_pipe[writing_end]);	close(		err_pipe[writing_end]);	fd_set master_fds;	FD_ZERO(		&master_fds);		FD_SET(		out_pipe[reading_end],		&master_fds);	FD_SET(		err_pipe[reading_end],		&master_fds);	output out;	int eof_count = 		0;	while (eof_count < 2)	{		fd_set read_fds = master_fds;		int 			maxfd = 				std::max(					out_pipe[reading_end],					err_pipe[reading_end]),			select_return = 				select(					maxfd+1,					&read_fds,					0,					0,					0);		if (select_return == -1)			throw 				fcppt::exception(					FCPPT_TEXT("select failed"));		int const fds[2] = 			{ 				out_pipe[reading_end],				err_pipe[reading_end] 			};		fcppt::string *outs[2] = 			{				&out.out,				&out.err			};		for (int i = 0; i < 2; ++i)		{			if (!FD_ISSET(fds[i],&read_fds))				continue;			ssize_t const buffer_size = 				static_cast<ssize_t>(					1024);			char char_buffer[buffer_size];			ssize_t const b = ::read(				fds[i],				char_buffer,				static_cast<std::size_t>(					buffer_size-1));						if (b == static_cast<ssize_t>(0))			{	//			fcppt::io::cerr << "recieved eof on fd " << fds[i] << "/n";				eof_count++;				FD_CLR(					fds[i],					&master_fds);				continue;			}						if (b == static_cast<ssize_t>(-1))				throw 					fcppt::exception(						FCPPT_TEXT("read failed"));	//		fcppt::io::cerr << "received the following crap: " << fcppt::string(char_buffer,char_buffer+b) << "/n";			outs[i]->insert(				outs[i]->end(),				char_buffer,				char_buffer + b);		}	}		waitpid(		pid,		(&out.exit_code),		0);		return out;}
开发者ID:freundlich,项目名称:gitbot,代码行数:101,


示例3: relay_tcp

void relay_tcp(SOCKS_STATE *state){  fd_set   rfds, xfds;  int      nfds, sfd;  struct   timeval tv;  struct   timezone tz;  ssize_t  wc;  rlyinfo  ri;  int      done;  u_long   max_count = idle_timeout;  u_long   timeout_count;  LOGINFO	li;  memset(&ri, 0, sizeof(ri));  memset(&li, 0, sizeof(li));  ri.ss = (struct sockaddr *)NULL;  ri.len = 0;  ri.nr = BUFSIZE;  nfds = MAX(state->r, state->s);  setsignal(SIGALRM, timeout);  gettimeofday(&li.start, &tz);  li.bc = li.upl = li.dnl = 0;  ri.flags = 0; timeout_count = 0;  for (;;) {    FD_ZERO(&rfds);    FD_SET(state->s, &rfds); FD_SET(state->r, &rfds);    if (ri.flags == 0) {      FD_ZERO(&xfds);      FD_SET(state->s, &xfds); FD_SET(state->r, &xfds);    }    done = 0;    /* idle timeout related setting. */    tv.tv_sec = 60; tv.tv_usec = 0;   /* unit = 1 minute. */    tz.tz_minuteswest = 0; tz.tz_dsttime = 0;    sfd = select(nfds+1, &rfds, 0, &xfds, &tv);    if (sfd > 0) {      if (FD_ISSET(state->r, &rfds)) {	ri.from = state->r; ri.to = state->s; ri.flags = 0;	if ((wc = forward(&ri)) <= 0)	  done++;	else	  li.bc += wc; li.dnl += wc;	FD_CLR(state->r, &rfds);      }      if (FD_ISSET(state->r, &xfds)) {	ri.from = state->r; ri.to = state->s; ri.flags = MSG_OOB;	if ((wc = forward(&ri)) <= 0)	  done++;	else	  li.bc += wc; li.dnl += wc;	FD_CLR(state->r, &xfds);      }      if (FD_ISSET(state->s, &rfds)) {	ri.from = state->s; ri.to = state->r; ri.flags = 0;	if ((wc = forward(&ri)) <= 0)	  done++;	else	  li.bc += wc; li.upl += wc;	FD_CLR(state->s, &rfds);      }      if (FD_ISSET(state->s, &xfds)) {	ri.from = state->s; ri.to = state->r; ri.flags = MSG_OOB;	if ((wc = forward(&ri)) <= 0)	  done++;	else	  li.bc += wc; li.upl += wc;	FD_CLR(state->s, &xfds);      }      if (done > 0)	break;    } else if (sfd < 0) {      if (errno != EINTR)	break;    } else { /* sfd == 0 */      if (max_count != 0) {	timeout_count++;	if (timeout_count > max_count)	  break;      }    }  }  gettimeofday(&li.end, &tz);  log_transfer(state->si, &li);  close(state->r);  close(state->s);}
开发者ID:CRDevOps,项目名称:srelay,代码行数:89,


示例4: main

/** * new connecion comes, copy file descroptor of new connecton to child * process , parent process select * @return  0 */int main(int argc, char **argv){    int res;    res = register_sig_handler();    if (res < 0)        err_sys("register_sig_handler is err");    my_getopt(argc, argv);    int pipefd[2];    int socket_fd;    res = srv_socket_init(&socket_fd, 50, PORT);    if (res < 0)        err_sys("srv_socket_init err");    fd_set myset;    FD_ZERO(&myset);    FD_SET(socket_fd, &myset);    int max = socket_fd;    arraychild = (child_t *) malloc(sizeof(child_t) * childnum);    memset(arraychild, 0, sizeof(child_t) * childnum);    for (int i = 0 ; i < childnum; i++)    {        res = socketpair(AF_LOCAL, SOCK_STREAM, 0, pipefd);        if (res < 0)            err_sys("socketpair is err");        arraychild[i].child_pipefd = pipefd[0];        FD_SET(pipefd[0], &myset);        if (pipefd[0] > max)            max = pipefd[0];        int pid = fork();        if (pid < 0)            err_sys("fork err");        if (pid == 0)        {            srv_socket_destory(&socket_fd);            int connfd;            int childpid = getpid();            while(1)            {                char c;                res = read_fd(pipefd[1], &c, 1, &connfd);                if (res < 0)                    err_sys("read_fd err");                fprintf(stdout, "pid is %d, accept success./n",childpid);                child_process(connfd);                write(pipefd[1], "", 1);                srv_socket_close(&connfd);            }            //exit(0);        }        else        {            arraychild[i].child_pid = pid;        }    }    struct sigaction myact;    myact.sa_handler = sig_int_handler;    if (sigaction(SIGINT, &myact, NULL) < 0)        err_sys("sigaction err");    int navail = childnum;    fd_set rset ;    int newfd;    int i = 0;    while(1)    {        rset = myset;        if (navail <=0 )            FD_CLR(socket_fd, &rset);        select(max + 1, &rset, NULL, NULL, NULL);        if (FD_ISSET(socket_fd, &rset))        {            newfd = accept(socket_fd, NULL, NULL);            for (i = 0; i < childnum; i++)            {                if (arraychild[i].child_status == 0)                    break;            }            res = write_fd(arraychild[i].child_pipefd, "", 1, newfd);//.........这里部分代码省略.........
开发者ID:fonglee,项目名称:just_for_fun,代码行数:101,


示例5: main

//.........这里部分代码省略.........                if  ( FD_ISSET ( i,  &ler_fds))  {                                         if ( i == clientes_fd[0]) {                                             //trata novas conex
C++ FD_ISSET函数代码示例
C++ FDT_CHECK_HEADER函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。