Sponsored Content
Top Forums Programming calling a shared object from a daemon Post 302091869 by axes on Thursday 5th of October 2006 01:20:01 PM
Old 10-05-2006
Thanks corona 4 ur suggestions. I am little bit confused abt thread creation.

For ur reference I am pasting my daemon template code. Pls embed the new code to establish a TCP connection to vendor server so that I can simulate the same.

Sorry to bother abt my code.
Code:
#define _REENTRANT
----- HEADER FILES -----------
/* the TCP port that I will be listening for my clients*/
#define TCP_PORT   6500
void *process_clnt(void *);
main()
{
   int 	sockfd, newsockfd, clilen;
   struct sockaddr_in cli_addr, serv_addr;
   thread_t chld_thr;

   if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
	fprintf(stderr,"my_daemon: can't open stream socket\n"), exit(0);
   memset((char *) &serv_addr, 0, sizeof(serv_addr));
   serv_addr.sin_family = AF_INET;
   serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
   serv_addr.sin_port = htons(TCP_PORT);	
   if(bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
		fprintf(stderr,"server: can't bind local address\n"), exit(0);
   thr_setconcurrency(5);
   listen(sockfd, NULL);

   for(;;){
	clilen = sizeof(cli_addr);
	newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
	if(newsockfd < 0)
		fprintf(stderr,"server: accept error\n"), exit(0);
	/* create a new thread to process the incomming client request */
	thr_create(NULL, 0, process_clnt, (void *) newsockfd, THR_DETACHED, &chld_thr);
   }
   return(0);
}

void *process_clnt(void *arg)
{
   int 	mysocfd = (int) arg;
   char 	data[100];
   /* read from the given socket */
   read(mysocfd, data, data_size);
   /* DO SOME PROCESSING */

   /* This is the place I want to have a TCP connection to vendor server to get the result */
       ----------------------
       ----------------------
   write(mysockfd,result,result_size); /* send back result to my client */
   close(mysocfd);
   thr_exit((void *)0);
}


Last edited by blowtorch; 10-05-2006 at 02:53 PM.. Reason: add code tags
axes
 

10 More Discussions You Might Find Interesting

1. Programming

Does my ld support shared object creation

Hi, I have been trying to create a sharef object on my HP UX 11 machine (HP-UX <myhostname> B.11.00 A 9000/879 ...... two-user license) to create the shared object first I am creating the object file using cc -Aa -c +z dyn.c (I use -Aa and +z as per HP's manual on linkers ) to create the... (0 Replies)
Discussion started by: linuxpenguin
0 Replies

2. Linux

Shared Object File

Hi All, I created the share object file using gcc -shared -fpic mypp.cpp -o myp.so but, pls tell me how to link this .so file to my client program. Thanks (0 Replies)
Discussion started by: sarwan
0 Replies

3. AIX

Shared Object library problem

Hi, When using shared objects on AIX 4.3 i am getting runtime problems. I have a small sample program which links to a shared object libray, oracle and system related libraries. At runtime it fails (gives segmentation fault and coredump ) in one proc file when executing login statement. But... (0 Replies)
Discussion started by: suman_jakkula
0 Replies

4. UNIX for Advanced & Expert Users

Issue with shared object in AIX

Hi All, I have a problem with the shared objects setup in AIX. We have a customized shell written by the developers over here. When i issue a MQ Series command (mqsilist) it is giving the error as . All the commands making use of this libImbCmdLib.a.so is failing. But when executed in normal... (1 Reply)
Discussion started by: dhanamurthy
1 Replies

5. Shell Programming and Scripting

Any way to access shared object using shell

Hi, I have created a shared object (abc.so) which has a function sum(int a, int b). Is there any way to load the "abc.so" and use the sum function using shell script.. thanks in advance (2 Replies)
Discussion started by: yhacks
2 Replies

6. AIX

AIX 5.2 C++ shared object issue

Hi all, I am developing an application with two components. One "c" binary and one "C++" shared object. While execution, the shared object crashes out and core dump is created whenever "new" is executed. But if i use malloc this will work perfectly. I tried to use dbx. Below given was... (1 Reply)
Discussion started by: itssujith
1 Replies

7. Programming

Error while running shared object

Hello, While running a c++ shared object on AIX I am facing below error - rtld: 0712-001 Symbol __ct__3ETDFv was referenced from module /bancs/aml/lib/libmonitor.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol etd_insert__3ETDFv was... (3 Replies)
Discussion started by: yatrik007
3 Replies

8. Red Hat

shared object

Hi, I would like to create a shared object ( .so). This shared object 1. uses the functions from a library. 2. Also it should be able to use the global variable in an app To achieve this what should I do ? 1) To use the functions in the library should I give the -ld option while... (1 Reply)
Discussion started by: rvan
1 Replies

9. Programming

Shared Object Question

Hello, I am new to programming shared objects and I was hoping someone could tell me if what I want to do is possible, or else lead me in the right direction. I have a main program that contains an abstract base class. I also have a subclass that I'm compiling as a shared object. The subclass... (13 Replies)
Discussion started by: dorik
13 Replies

10. Programming

Help building and using a shared object (x64)

Hello, I am not that experienced with Linux, and I am currently facing some issues. The application I'm working on uses hundreds of threads. To optimize the memory usage, I am putting all my data inside a shared object (so). The steps for this are as follows: 1. a C file (generated... (17 Replies)
Discussion started by: Maelstrom
17 Replies
explain_connect_or_die(3)				     Library Functions Manual					 explain_connect_or_die(3)

NAME
explain_connect_or_die - initiate a connection on a socket and report errors SYNOPSIS
#include <libexplain/connect.h> void explain_connect_or_die(int fildes, const struct sockaddr *serv_addr, int serv_addr_size); DESCRIPTION
The explain_connect_or_die function is used to call the connect(2) system call. On failure an explanation will be printed to stderr, obtained from explain_connect(3), and then the process terminates by calling exit(EXIT_FAILURE). This function is intended to be used in a fashion similar to the following example: explain_connect_or_die(fildes, serv_addr, serv_addr_size); fildes The fildes, exactly as to be passed to the connect(2) system call. serv_addr The serv_addr, exactly as to be passed to the connect(2) system call. serv_addr_size The serv_addr_size, exactly as to be passed to the connect(2) system call. Returns: This function only returns on success. On failure, prints an explanation and exits. SEE ALSO
connect(2) initiate a connection on a socket explain_connect(3) explain connect(2) errors exit(2) terminate the calling process COPYRIGHT
libexplain version 0.52 Copyright (C) 2008 Peter Miller explain_connect_or_die(3)
All times are GMT -4. The time now is 04:07 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy