I have a struct that I use to pass arguments to a function referenced by pthread_create(). It looks like this:
Expand|Select|Wrap|Line Numbers
- struct __tryConnect_args
- {
- int sock;
- char * hoststr;
- unsigned int port;
- int proto;
- };
Expand|Select|Wrap|Line Numbers
- char * hostString;
- hostString = dnsLookup(argv[1], AF_INET); /* prototype : char * dnsLookup(char *, int) */
- printf("Connecting to %s\n", hostString);
- for (i = 0; i < maxConns; i++)
- {
- connArgs[i].sock = sock;
- connArgs[i].hoststr = hostString;
- connArgs[i].proto = PF_INET;
- connArgs[i].port = port;
- pthread_create( &connThreads[i],
- NULL,
- &__tryConnect,
- (void *) &connArgs[i] );
- }
__tryConnect() looks like this:
Expand|Select|Wrap|Line Numbers
- void * __tryConnect(void * args)
- {
- struct __tryConnect_args * argsStruct;
- argsStruct = (struct __tryConnect_args *) args;
- printf("args: hoststr: %s\nport: %d\n", argsStruct->hoststr, argsStruct->port);
- }
Expand|Select|Wrap|Line Numbers
- Getting address info for google.com
- Connecting to 209.85.171.100
- args: hoststr: � �@
- port: 80