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
MSGCACHE(8)						      System Manager's Manual						       MSGCACHE(8)

NAME
msgcache - Cache client messages for later pickup by hobbitfetch SYNOPSIS
msgcache [options] DESCRIPTION
msgcache implements a Xymon message cache. It is intended for use with clients which cannot deliver their data to the Xymon server in the normal way. Instead of having the client tools connect to the Xymon server, msgcache runs locally and the client tools then deliver their data to the msgcache daemon. The msgcache daemon is then polled regularly by the hobbitfetch(8) utility, which collects the client messages stored by msgcache and forwards them to the Xymon server. NOTE: When using msgcache, the BBDISP setting for the clients should be BBDISP=127.0.0.1 instead of pointing at the real Xymon server. RESTRICTIONS
Clients delivering their data to msgcache instead of the real Xymon server will in general not notice this. Specifically, the client con- figuration data provided by the Xymon server when a client delivers its data is forwarded through the hobbitfetch / msgcache chain, so the normal centralized client configuration works. However, other commands which rely on clients communicating directly with the Xymon server will not work. This includes the config and query commands which clients may use to fetch configuration files and query the Xymon server for a current status. The download command also does not work with msgcache. This means that the automatic client update facility will not work for clients com- municating via msgcache. OPTIONS
--listen=IPADDRESS[:PORT] Defines the IP-address and portnumber where msgcache listens for incoming connections. By default, msgcache listens for connections on all network interfaces, port 1984. --server=IPADDRESS[,IPADDRESS] Restricts which servers are allowed to pick up the cached messages. By default anyone can contact the msgcache utility and request all of the cached messages. This option allows only the listed servers to request the cached messages. --max-age=N Defines how long cached messages are kept. If the message has not been picked up with N seconds after being delivered to msgcache, it is silently discarded. Default: N=600 seconds (10 minutes). --daemon Run as a daemon, i.e. msgcache will detach from the terminal and run as a background task --no-daemon Run as a foreground task. This option must be used when msgcache is started by hobbitlaunch(8) which is the normal way of running msgcache. --pidfile=FILENAME Store the process ID of the msgcache task in FILENAME. --logfile=FILENAME Log msgcache output to FILENAME. --debug Enable debugging output. SEE ALSO
hobbitfetch(8), xymon(7) Xymon Version 4.2.3: 4 Feb 2009 MSGCACHE(8)
All times are GMT -4. The time now is 06:05 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy