Esempio n. 1
0
int
main(int argc, char **argv)
{
	int		fd1, fd2, *ptr1, *ptr2;
	pid_t	childpid;
	struct stat	stat;

	if (argc != 2)
		err_quit("usage: test3 <name>");

	// shm_unlink(Px_ipc_name(argv[1]));
	// fd1 = Shm_open(Px_ipc_name(argv[1]), O_RDWR | O_CREAT | O_EXCL, FILE_MODE);
	shm_unlink(argv[1]);
	fd1 = Shm_open(argv[1], O_RDWR | O_CREAT | O_EXCL, FILE_MODE);

	Ftruncate(fd1, sizeof(int));
	fd2 = Open("/etc/motd", O_RDONLY);
	Fstat(fd2, &stat);

	if ( (childpid = Fork()) == 0) {
		/* child */
		ptr2 = Mmap(NULL, stat.st_size, PROT_READ, MAP_SHARED, fd2, 0);
		ptr1 = Mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE,
					MAP_SHARED, fd1, 0);
		printf("child: shm ptr = %p, motd ptr = %p\n", ptr1, ptr2);

		sleep(5);
		printf("shared memory integer = %d\n", *ptr1);
		exit(0);
	}
	/* parent: mmap in reverse order from child */
	ptr1 = Mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED, fd1, 0);
	ptr2 = Mmap(NULL, stat.st_size, PROT_READ, MAP_SHARED, fd2, 0);
	printf("parent: shm ptr = %p, motd ptr = %p\n", ptr1, ptr2);
	*ptr1 = 777;
	Waitpid(childpid, NULL, 0);

	exit(0);
}
Esempio n. 2
0
int
main(int argc, char *argv[])
{
    int        ret;

    if (argc != 2)
        err_quit("usage:  ftw  <starting-pathname>");

    ret = myftw(argv[1], myfunc);        /* does it all */

    if ( (ntot = nreg + ndir + nblk + nchr + nfifo + nslink + nsock) == 0)
        ntot = 1;        /* avoid divide by 0; print 0 for all counts */
    printf("regular files  = %7ld, %5.2f %%\n", nreg,  nreg*100.0/ntot);
    printf("directories    = %7ld, %5.2f %%\n", ndir,  ndir*100.0/ntot);
    printf("block special  = %7ld, %5.2f %%\n", nblk,  nblk*100.0/ntot);
    printf("char special   = %7ld, %5.2f %%\n", nchr,  nchr*100.0/ntot);
    printf("FIFOs          = %7ld, %5.2f %%\n", nfifo, nfifo*100.0/ntot);
    printf("symbolic links = %7ld, %5.2f %%\n", nslink,nslink*100.0/ntot);
    printf("sockets        = %7ld, %5.2f %%\n", nsock, nsock*100.0/ntot);

    exit(ret);
}
Esempio n. 3
0
int main(int argc, char *argv[])
{
	int val;
	if (argc != 2)
		err_quit("usage: a.out <descriptor#>");
	if ((val = fcntl(atoi(argv[1]), F_GETFL, 0)) < 0)
		err_sys("fcntl error for fd %d", atoi(argv[1]));
	
	switch (val &O_ACCMODE) {
	case O_RDONLY:
		printf("read only");
		break;
	case O_WRONLY:
		printf("write only");
		break;
	case O_RDWR:
		printf("read write");
		break;
	default:
		err_dump("unknow access mode");
	}

	if (val &O_APPEND)
		printf(", append");
	if (val &O_NONBLOCK)
		printf(", nonblocking");

#if defined(O_SYNC)
	if (val &O_SYNC)
		printf(", syncchronous write");
#endif	

#if !defined(_POSIX_C_SOURCE) && defined(O_SYNC)
	if (val &O_FSYNC)
		printf(", syncchronous write");
#endif	
	putchar('\n');
	exit(0);
}	
Esempio n. 4
0
int
main(int argc, char **argv)
{
  int         sockfd;
  struct sockaddr_in  servaddr;

  if (argc != 2)
    err_quit("usage: tcpcli <IPaddress>");

  sockfd = Socket(AF_INET, SOCK_STREAM, 0);

  bzero(&servaddr, sizeof(servaddr));
  servaddr.sin_family = AF_INET;
  servaddr.sin_port = htons(7);
  Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);

  Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));

  str_cli(stdin, sockfd);   /* do it all */

  exit(0);
}
Esempio n. 5
0
int main(int argc, const char *argv[]) {
	int fdin, fdout;
	void *src, *dst;
	size_t copysz;
	struct stat sbuf;
	off_t fsz = 0;
	
	if (argc != 0)
		err_quit("usage: %s <fromfile> <tofile>", argv[0]);
	if ((fdin = open(argv[1], O_RDONLY)) < 0)
		err_sys("can`t open %s for reading", argv[1]);
	if ((fdout = open(argv[2], O_RDWR | O_CREAT | O_TRUNC,
		FILE_MODE)) < 0)
		err_sys("can`t creat %s for writing", argv[2]);
	if (fstat(fdin, &sbuf) < 0)
		err_sys("fstat error");
	if (ftruncate(fdout, sbuf.st_size) < 0)
		err_sys("ftruncate error");
	
	while (fsz < sbuf.st_size) {
		if ((sbuf.st_size - fsz) > COPYINCR)
			copysz = COPYINCR;
		else
			copysz = sbuf.st_size - fsz;
		
		if ((src = mmap(0, copysz, PROT_READ, MAP_SHARED,
			fdin, fsz)) == MAP_FAILED)
			err_sys("mmap error for input");
		if ((dst = mmap(0, copysz, PROT_READ | PROT_WRITE,
			MAP_SHARED, fdout, fsz)) == MAP_FAILED)
			err_sys("mmap error for output");
		
		memcpy(dst, src, copysz);
		munmap(src, copysz);
		munmap(dst, copysz);
		fsz += copysz;
	}
	exit(0);
}
Esempio n. 6
0
int
main(int argc, char **argv)
{
	int					fd;

	if (argc != 2)
		err_quit("usage: checkopts <device>");

	fd = T_open(argv[1], O_RDWR, NULL);
	T_bind(fd, NULL, NULL);

	req = T_alloc(fd, T_OPTMGMT, T_ALL);
	ret = T_alloc(fd, T_OPTMGMT, T_ALL);

	xti_def_uchar_opt(fd, "T_IP_TOS", T_INET_IP, T_IP_TOS);
	xti_def_uchar_opt(fd, "T_IP_TTL", T_INET_IP, T_IP_TTL);

	xti_def_uscalar_opt(fd, "T_TCP_MAXSEG", T_INET_TCP, T_TCP_MAXSEG);
	xti_def_uscalar_opt(fd, "T_TCP_NODELAY", T_INET_TCP, T_TCP_NODELAY);

	exit(0);
}
Esempio n. 7
0
int main(int argc, char **argv)
{
	int c, id, oflag;
	char *ptr;
	size_t length;

	oflag = SVSHM_MODE | IPC_CREAT;
	while ((c = Getopt(argc, argv, "e")) != -1) {
		switch (c) {
			case 'e':
				oflag |= IPC_EXCL;
				break;
		}
	}
	if (optind != argc - 2)
		err_quit("Usage: get [-e] <pathname> <length>");
	length = atoi(argv[optind + 1]);

	id = Shmget(Ftok(argv[optind], 0), length, oflag);
	ptr = Shmat(id, NULL, 0);
	exit(0);
}
Esempio n. 8
0
int main(int argc, char *argv[]) {
  unsigned int value = 1;
  int flags = O_RDWR | O_CREAT;

  int c;
  while ((c = getopt(argc, argv, "ei:")) != -1) {
    switch (c) {
      case 'e':
        flags |= O_EXCL;
        break;
      case 'i':
        value = atoi(optarg);
        break;
    }
  }

  if (optind != argc - 1)
    err_quit("Usage: semcreate [-e] [-i initvalue] <name>");

  sem_t *sem = sem_open(argv[optind], flags, FILE_MODE, value);
  // sem_close(sem);
}
Esempio n. 9
0
void server(int readfd, int writefd)
{
  int fd;
  ssize_t n;
  char buff[MAXLINE+1];
  
  /*从管道读路径名*/
  if( (n = Read(readfd, buff, MAXLINE)) == 0)
    err_quit("end-of -file while reading pathname");
  buff[n] = '\0';
  
  if( (fd = open(buff, O_RDONLY)) < 0){/*打开文件处理错误*/
    snprintf(buff+n, sizeof(buff) - n, ":can't open, %s\n", 
	     strerror(errno));
    n = strlen(buff);
    Write(writefd, buff, n);
  }else{
    while( (n = Read(fd, buff, MAXLINE)) > 0)/*把文件复制到管道*/
      Write(writefd, buff, n);
    Close(fd);
  }
}
Esempio n. 10
0
File: 1.3.c Progetto: kaiiak/APUE
int
main(int argc, char const *argv[])
{
	DIR 			*dp;
	struct dirent 	*dirp;

	if (argc != 2)
	{
		err_quit("usage: ls directory_name");
	}

	if ((dp = opendir(argv[1])) == NULL)
	{
		err_sys("can't open %s", argv[1]);
	}

	while((dirp = readdir(dp)) != NULL)
		printf("%s\n", dirp->d_name);
	
	closedir(dp);
	exit(0);
}
Esempio n. 11
0
ElemType Remove(List list, int position)
{
  if (position < 0 || position > list->value - 1) {
    DestroyList(list);
    err_quit("Remove: position %d out of range, failed.", position);
  }

  Pos pos = list;

  int i;
  for (i = 0; i < position; ++i)
    pos = pos->next;
  
  Node p = pos->next;
  ElemType temp = p->value;

  pos->next = pos->next->next;
  free(p);

  list->value--;
  return temp;
}
Esempio n. 12
0
/**
 * Copy identifier
 */
static char *
copy_identifier(const char *id)
{
    size_t	 count    = identifier_maxSize;
    char	*dest_buf = malloc(count + 1);
    char	*dest;

    if (!dest_buf)
	err_exit(ENOMEM, "copy_identifier");
    else {
	dest = &dest_buf[0];
    }

    while ((sw_isalnum(*id) || *id == '_') && count > 1) {
	*dest++ = *id++, count--;
    }

    *dest = '\0';
    if (count == 1)
	err_quit("In copy_identifier: fatal: string was truncated!");
    return (dest_buf);
}
Esempio n. 13
0
int main(int argc, char **argv) {
    int sockfd;
    int n;
    char recvline[MAXLINE+1];
    socklen_t salen;
    struct sockaddr *sa;

    if (argc != 3)
        err_quit("usage: daytimeudpcli <hostname/IPaddress> <service/port#>");

    sockfd = Udp_client(argv[1], argv[2], (void **)&sa, &salen);

    printf("sending to %s\n", Sock_ntop_host(sa, salen));

    Sendto(sockfd, "", 1, 0, sa, salen); /* send 1-byte datagram */

    n = Recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL);
    recvline[n] = '\0';
    Fputs(recvline, stdout);

    exit(0);
}
Esempio n. 14
0
uint8_t *
pdapi_recvmsg(int sock_fd,
	      int *rdlen,
	      SA *from,
	      int *from_len,
	      struct sctp_sndrcvinfo *sri,
	      int *msg_flags)
{
	int rdsz,left,at_in_buf;
	int frmlen=0;

	if (sctp_pdapi_readbuf == NULL) {
		sctp_pdapi_readbuf = (uint8_t *)Malloc(SCTP_PDAPI_INCR_SZ);
		sctp_pdapi_rdbuf_sz = SCTP_PDAPI_INCR_SZ;
	}
	at_in_buf = Sctp_recvmsg(sock_fd, sctp_pdapi_readbuf, sctp_pdapi_rdbuf_sz,
				 from, from_len,
				 sri,msg_flags);
	if(at_in_buf < 1){
		*rdlen = at_in_buf;
		return(NULL);
	}
	while((*msg_flags & MSG_EOR) == 0) {
		left = sctp_pdapi_rdbuf_sz - at_in_buf;
		if(left < SCTP_PDAPI_NEED_MORE_THRESHOLD) {
			sctp_pdapi_readbuf = realloc(sctp_pdapi_readbuf, sctp_pdapi_rdbuf_sz+SCTP_PDAPI_INCR_SZ);
			if(sctp_pdapi_readbuf == NULL) {
				err_quit("sctp_pdapi ran out of memory");
			}
			sctp_pdapi_rdbuf_sz += SCTP_PDAPI_INCR_SZ;
			left = sctp_pdapi_rdbuf_sz - at_in_buf;
		}
		rdsz = Sctp_recvmsg(sock_fd, &sctp_pdapi_readbuf[at_in_buf], 
			     left, NULL, &frmlen, NULL, msg_flags);
		at_in_buf += rdsz;
	}
	*rdlen = at_in_buf;
	return(sctp_pdapi_readbuf);
}
int main(int argc, char *argv[])
{
    int i, fd, n, maxnconn, flags, error;
    char buf[MAXLINE];
    fd_set rs, ws;
    if (argc < 5)
        err_quit("usage: web <#conn> <hostname> <homepage> <file1> ...");
    maxnconn = atoi(argv[1]);
    nfiles = min(argc - 4, MAXFILES);
    for (i = 0; i < nfiles; i++) {
        file[i].f_name = argv[i+4];
        file[i].f_host = argv[2];
        file[i].f_flags = 0;
    }
    printf("nfiles = %d\n", nfiles);

    home_page(argv[2], argv[3]);

    nlefttoread = nlefttoconn = nfiles;
    nconn = 0;

    Signal(SIGCHLD, sig_chld);

    for (i = 0; i < maxnconn; i++) {
        if (Fork() == 0) {
            /*child */
            printf("child %d started\n", getpid());
            home_page(file[i].f_host, file[i].f_name);
            exit(0);
        }
        file[i].f_flags = F_DONE;
    }

    while (nlefttoread > 0) {
        pause();
    }
    printf("all finished\n");
    return(0);
}
Esempio n. 16
0
int main(int argc, char** argv)
{
	int sockfd;
	socklen_t len;
	struct sockaddr_un addr1, addr2;
	
	if(argc != 2)
	{
		err_quit("usage: unixbind <pathname>");
	}
	
	sockfd = Socket(AF_LOCAL, SOCK_STREAM, 0);
	unlink(argv[1]);
	bzero(&addr1, sizeof(addr1));
	addr1.sun_family = AF_LOCAL;
	strncpy(addr1.sun_path, argv[1], sizeof(addr1.sun_path)-1);
	Bind(sockfd, (SA*)&addr1, SUN_LEN(&addr1));
	len = sizeof(addr2);
	Getsockname(sockfd, (SA*)&addr2, &len);
	printf("bound name = %s, returned len = %d\n", addr2.sun_path, len);
	exit(0);
}
Esempio n. 17
0
ssp_lowner_t *ssp_lock_test (int fd, short type, short whence, off_t start,
	off_t len)
{
	flock_t lock;
	static ssp_lowner_t lock_owner;

	lock.l_type = type;
	lock.l_whence = whence;
	lock.l_start = start;
	lock.l_len = len;

	if (fcntl (fd, F_GETLK, &lock) == -1)
		err_quit ("fcntl failed");

	if (lock.l_type == F_UNLCK)
		return (NULL);

	lock_owner.sysid = lock.l_sysid;
	lock_owner.pid = lock.l_pid;

	return (&lock_owner);
}
Esempio n. 18
0
main()
{
    int fd[2], on, n;
    char buf[100];
    struct fcred cred;

    if (socketpair(AF_LOCAL, SOCK_STREAM, 0, fd) < 0)
        err_sys("socketpair error");

    /* must set the socket option on the *receiving* socket */
    on = 1;
    Setsockopt(fd[1], 0, LOCAL_CREDS, &on, sizeof(on));

    Write(fd[0], "hello, world\n", 13);

    if ((n = recv_cred(fd[1], buf, sizeof(buf), &cred)) < 0)
        err_sys("recv_cred error");
    else if (n == 0)
        err_quit("recv_cred, unexpected EOF");

    buf[n] = 0; /* null terminate */
    printf("data: %s", buf);

    if (cred.fc_ngroups == 0)
        printf("(no credentials returned)\n");
    else {
        printf("real user ID = %d\n", cred.fc_ruid);
        printf("real group ID = %d\n", cred.fc_rgid);
        printf("login name = %-*s\n", MAXLOGNAME, cred.fc_login);
        printf("effective user ID = %d\n", cred.fc_uid);
        printf("effective group ID = %d\n", cred.fc_gid);
        printf("%d supplementary groups:", cred.fc_ngroups - 1);
        for (n = 1; n < cred.fc_ngroups; n++) /* [0] is the egid */
            printf(" %d", cred.fc_groups[n]);
        printf("\n");
    }

    exit(0);
}
Esempio n. 19
0
void child_main(int fd,socklen_t addrlen)
{
	socklen_t clilen;
	struct sockaddr *cliaddr;
	int	connfd;

	cliaddr = malloc(addrlen);
	for(;;)
	{
		clilen = addrlen;
		my_lock_wait();
		if((connfd = accept(listenfd,cliaddr,&clilen)) < 0)
		{
			if(errno = EINTR)
				continue;
			else
				err_quit("accept error!");
		}
		my_lock_release();
		web_child(connfd);
	}
}
Esempio n. 20
0
int main(int argc, char **argv) {
	int connfd, n;
	char recvline[MAXLINE + 1];
	connfd = socket(AF_INET, SOCK_STREAM, 0); 
	struct sockaddr_in addr;
	bzero(&addr, sizeof(addr));
	addr.sin_family = AF_INET;
	addr.sin_port = htons(13);
	if (inet_pton(AF_INET, argv[1], &addr.sin_addr) < 0)
		err_quit("inet_pton error");
	if (connect(connfd, (struct sockaddr*)&addr, sizeof(addr)) < 0)
		err_sys("Connect error");
	while ((n = read(connfd, recvline, MAXLINE)) > 0) {
		recvline[n] = 0;
		if (fputs(recvline, stdout) == EOF) {
			err_sys("fputs error");
		}
	}
	if (n < 0)
		err_sys("read error");
	exit(0);
}
Esempio n. 21
0
int main(int argc, char **argv)
{
     int    sockfd = 0;
     struct sockaddr_in     servaddr;

     if (argc < 2)
     {
          err_quit("usage: ./a.out <IPaddress>");
     }

     bzero(&servaddr, sizeof(servaddr));
     servaddr.sin_family = AF_INET;
     servaddr.sin_port = htons(SERV_PORT); //将一个无符号短整型的主机数值转换为网络字节顺序
     my_inet_pton(AF_INET, MCAST_IP, &servaddr.sin_addr); //十进制IP转二进制

     //创建一个套接字
     sockfd = my_socket(AF_INET, SOCK_DGRAM, 0);

     dg_cli(stdin, sockfd, (SA *) &servaddr, sizeof(servaddr));

     exit(0);
}
Esempio n. 22
0
/* next_blocked: toggle rightmost 'on' bit and return index of it, else 0 */
static int next_blocked(unsigned long *set)
{
	unsigned long tmp;
	int i;
	long long mask;

	if (*set == (sigset_t)0)
		return 0;	/* no bits set */
	tmp = *set;
	mask = (long long)1;
	for (i = 0; i < 64; i++) {
		if (tmp && mask)
			break;
		mask == mask << 1;
	}
	if (i == 64)
		err_quit("error: loop completed"); /* should not get here */
	
	mask = (long long)1 << i; 
	*set = *set && ~(mask);	/* turn off bit */
	return i;
}
Esempio n. 23
0
/* barrier server */
int main(int argc, char *argv[])
{
	char *req, *rel;
	char *name, *prog;	
	int n;
	
	prog = argv[0];
	if (argc != 3)
		err_quit("Usage: %s name size", prog);
	name = argv[1];
	n = atoi(argv[2]);

	if (br_pipenames(name, &req, &rel) == -1) 
		err_sys("br_pipnames error");

	if (br_createpipes(rel, req) != 0)
		err_sys("br_createpipes error");

	if (loop(n, req, rel) == -1)
		err_sys("Server:");
	exit(1);		/* shouldn't get here */
}
Esempio n. 24
0
int main(int argc, char *argv[])
{
	int	sockfd, n;
	char	recvline[MAXLINE + 1]; /* plus 1 for terminator */
	socklen_t salen;
	struct	sockaddr *sa;

	if (argc != 3)
		err_quit("usage: daytimeudpcli1 <hostname/IPaddress>"
			 " <service/port#>");

	sockfd = udp_client(argv[1], argv[2], (SA **)&sa, &salen);
	printf("sending to %s\n", sock_ntop_host(sa, salen));
	if (sendto(sockfd, " ", 1, 0, sa, salen) < 0)
		err_sys("sendto error");
	if ((n = recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL)) < 0)
		err_sys("recvfrom error");
	recvline[n] = 0;
	fputs(recvline, stdout);

	exit(0);
}
int main(int argc, char *argv[])
{
    struct sockaddr_in servaddr, cliaddr;
    int sockfd;

    if (argc != 2)
        err_quit("Usage: %s <Port>", basename(argv[0]));

    sockfd = Socket(AF_INET, SOCK_DGRAM, 0);

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    servaddr.sin_port = htons(atoi(argv[1]));

    Bind(sockfd, (SA *)&servaddr, sizeof(servaddr));

    sigio_dg_echo(sockfd, (SA *)&cliaddr, sizeof(cliaddr));

    exit(0);

}
Esempio n. 26
0
int main(int argc, char *argv[])
{
	
	time_t curtime;
	int len;
	char buf[PIPE_BUF];
	int fd;

	if (argc != 2)
		err_quit("Usage: %s filename", argv[0]);

	if ((fd = open(argv[1], O_WRONLY)) == -1)
		err_sys("client: open logfile failed: %s", argv[1]);

	curtime = time(NULL);
	snprintf(buf, PIPE_BUF, "%d: %s", (int)getpid(), ctime(&curtime));
	len = strlen(buf);
	if (r_write(fd, buf, len) != len)
		err_sys("client: failed to write");
	r_close(fd);
	return 0;
} 
Esempio n. 27
0
int
main(int argc, char **argv)
{
	int		i, nprocs;
	pid_t	childpid[MAXNPROC];

	if (argc != 3)
		err_quit("usage: incr_rwlock5 <#loops> <#processes>");
	nloop = atoi(argv[1]);
	nprocs = min(atoi(argv[2]), MAXNPROC);

		/* 4get shared memory for parent and children */
	shared = My_shm(sizeof(struct shared));

		/* 4initialize the read-write lock and obtain write lock */
	Rwlock_init(&shared->rwlock, USYNC_PROCESS, NULL);
	Rw_wrlock(&shared->rwlock);

		/* 4create all the children */
	for (i = 0; i < nprocs; i++) {
		if ( (childpid[i] = Fork()) == 0) {
			incr(NULL);
			exit(0);
		}
	}
		/* 4parent: start the timer and release the write lock */
	Start_time();
	Rw_unlock(&shared->rwlock);

		/* 4wait for all the children */
	for (i = 0; i < nprocs; i++) {
		Waitpid(childpid[i], NULL, 0);
	}
	printf("microseconds: %.0f usec\n", Stop_time());
	if (shared->counter != nloop * nprocs)
		printf("error: counter = %ld\n", shared->counter);

	exit(0);
}
int
udp_server_reuseaddr(const char *host, const char *serv, socklen_t *addrlenp)
{
	int				sockfd, n;
	const int		on = 1;
	struct addrinfo	hints, *res, *ressave;

	bzero(&hints, sizeof(struct addrinfo));
	hints.ai_flags = AI_PASSIVE;
	hints.ai_family = AF_UNSPEC;
	hints.ai_socktype = SOCK_DGRAM;

	if ( (n = getaddrinfo(host, serv, &hints, &res)) != 0)
		err_quit("udp_server error for %s, %s: %s",
				 host, serv, gai_strerror(n));
	ressave = res;

	do {
		sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
		if (sockfd < 0)
			continue;		/* error, try next one */

		Setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
		if (bind(sockfd, res->ai_addr, res->ai_addrlen) == 0)
			break;			/* success */

		Close(sockfd);		/* bind error, close and try next one */
	} while ( (res = res->ai_next) != NULL);

	if (res == NULL)	/* errno from final socket() or bind() */
		err_sys("udp_server error for %s, %s", host, serv);

	if (addrlenp)
		*addrlenp = res->ai_addrlen;	/* return size of protocol address */

	freeaddrinfo(ressave);

	return(sockfd);
}
Esempio n. 29
0
int 
main(int argc, char *argv[])
{
	key_t key;
	long qid;
	size_t nbytes;
	struct mymesg m;

	if (argc != 3)
		err_quit("usage: sendmsg KEY message\n");

	key = strtol(argv[1], NULL, 0);	
	if ((qid = msgget(key, 0)) < 0)
		err_sys("can't open queue key %s", argv[1]);
	memset(&m, 0, sizeof(m));
	strncpy(m.mtext, argv[2], MAXMSZ - 1);
	nbytes = strlen(m.mtext);
	m.mtype = 1;
	if (msgsnd(qid, &m, nbytes, 0) < 0)
		err_sys("can't send message");
	exit(0);	
}
Esempio n. 30
0
File: tour.c Progetto: myroman/beta
void getNodeName(){
	struct hwa_info	*hwa, *hwahead;
	struct sockaddr	*sa;
	struct hostent *hptr;
	for (hwahead = hwa = get_hw_addrs(); hwa != NULL; hwa = hwa->hwa_next) {

		if(strcmp(hwa->if_name, "eth0") == 0 || strcmp(hwa->if_name, "wlan0") == 0 ){
			if ( (sa = hwa->ip_addr) != NULL)
				myNodeIP = Sock_ntop_host(sa, sizeof(*sa));
		}
	}
	myNodeIP = Sock_ntop_host(sa, sizeof(*sa));
	if(inet_aton(myNodeIP, &ip_list[0]) != 0){
			if((hptr = gethostbyaddr(&ip_list[0], sizeof(struct in_addr), AF_INET)) == NULL){
                    err_quit ( "gethostbyaddress error for IP address: %s: %s" , myNodeIP, hstrerror(h_errno));
            		debug("errno: %s", strerror(errno));
            }
            printf("The server host name is %s.\n", hptr->h_name);
            myNodeName =(char*) malloc(strlen(hptr->h_name));
            strcpy(myNodeName,hptr->h_name);
    }    
}