01-10-2010
IPC Message Queue. msgrcv doesnt work..
Hi everybody,
this is the situation. there is a programm XYZ which opens a message queue with the key 47110815 and waits for a SIGUSR1. After receiving this signal it sends a message with type 100 and a number (as ASCII) in the message-body.
I have to write a prog which frist sends the SIGUSR1 to that process XYZ and receives the message which XYZ loaded in the message queue. After that it has to send a message (with type = the number in the messagebody). After receiving my message XYZ will modify it and load it again in the message queue. I have to read that modified message again. I've written the code but it hangs up at the line where it should receive the message (msgrcv) for the first time.
executing XYZ will display its pid. we will start my prog with that pid as parameter and will use it to send SIGUSR1 to XYZ.
I cant view XYZ but can ensure that it works, cuz its from our proffessor.. It'd be great if onyone could help. Here is my code:
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#define KEY 47110815
#define MSIZE 100
struct message{
long type;
char data[MSIZE];
};
struct message m;
main(int i, char *p[]){
int id;
long number; char s[100];
kill(atoi(p[1]),10); //sends SIGUSR1 to process XYZ
printf("\nSIGUSR1 sent!\n");
id=msgget(KEY,0666 );
printf("Waiting for 1. Message from XYZ...\n");
msgrcv(id,&m,MSIZE,(long)100,0);
printf("Message received!\n");
number = m.type = (long) atoi(m.data);
strcpy(&m.data[0],"abcde");
msgsnd(id,&m,MSIZE,0);
printf("Message sent with Typ=%d Id=%d\n",m.type,id);
printf("Waiting for changed Message...\n");
sleep(0.5);
msgrcv(id,&m,MSIZE,(long)number,0);
printf("Changed Message received!:");
printf(">>%d>>%s\n",m.type,m.data);
}
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
hi
when i want to go to previous directory by typing cd.. i get the following message
$ cd..
ksh: cd..: not found
Please help
rintingtong (2 Replies)
Discussion started by: rintingtong
2 Replies
2. HP-UX
Good Day
I mistakely renamed the dld.sl file in the /usr/lib directory. When i try to ls/ftp into the box i get this error :eek:
crt0: ERROR couldn't open /usr/lib/dld.sl errno:000000002
I have tried to rename it back from the renamed file to the original file name, but it gives me the... (2 Replies)
Discussion started by: shawnbishop
2 Replies
3. HP-UX
Hello,
My question is related to "pipcs -qa" command under HP-UX 11i PA-RISC 64 bits.
We have a little C program that creates posix ipc message queues using the mq_open() system function.
The program fail with 'No space left on device' error when we create big queues. What is the system... (6 Replies)
Discussion started by: cadanir
6 Replies
4. UNIX for Dummies Questions & Answers
When trying to copy a file in Solaris 8 it doesnt copy file or give a error. This worked 100% until the 29th. I've checked the rights and everything seems fine:
drwxrwxrwx 2 bmuser bmgroup 11776 Jan 3 10:32 spool
This is the file I want to copy:
-rwxrwxrwx 1 bmuser bmgroup ... (26 Replies)
Discussion started by: rudi.okelly
26 Replies
5. Programming
Hii can anyone pls tell how to limit the max no of message in a posix message queue. I have made changes in proc/sys/fs/mqueue/msg_max
But still whenever i try to read the value of max. message in the queue using attr.mq_curmsgs (where struct mq_attr attr) its giving the default value as 10.... (0 Replies)
Discussion started by: mohit3884
0 Replies
6. Programming
Hi,
I´m having a lot of problems when working with message queues, both on HP-UX Systems and Sun Solaris. When we fill a queue with a messages, the system hangs and locks everything that relies on the use of IPC resources. Anyone knows how to eliminate this problem?
Thanks,
Haroldo Teixeira (2 Replies)
Discussion started by: haroldo
2 Replies
7. Shell Programming and Scripting
I have created a script which will monitor disk space in unix, it will send an email alert that will notify the specified receipients. I used echo in the mailx command but the email doesnt contain any message. I have used printf to store the message ($message2) and when tried to display on the... (2 Replies)
Discussion started by: lscanaleta
2 Replies
8. Shell Programming and Scripting
It just does the break...even though the files are not the same...
# Compare extracts
#==========================================
count=0
while (( count < 5 ))
do
(( count+=1 ))
echo "Try $count"
file1=$(ls -l /tmp/psjava.xml|... (5 Replies)
Discussion started by: sigh2010
5 Replies
9. AIX
Hi Guys,
I have a strange problem.( AIX 6.1) "vi" is not working at all..Whenever i #vi <anythin> ,, it returns the prompt back. Any clues folks?? (14 Replies)
Discussion started by: muzahed
14 Replies
10. UNIX for Dummies Questions & Answers
I am trying to print out two fields in a file using awk. So, I have got
awk -F '\t' 'NF = 2 {print $1 $2 "]"}' two.txt
in a script called what.awk
When i run this version like this - ./what.awk then it runs however I want to run the program like this
awk -f what.awk two.txt.
When I... (8 Replies)
Discussion started by: The undertaker
8 Replies
LEARN ABOUT REDHAT
ipc::msg
IPC::Msg(3pm) Perl Programmers Reference Guide IPC::Msg(3pm)
NAME
IPC::Msg - SysV Msg IPC object class
SYNOPSIS
use IPC::SysV qw(IPC_PRIVATE S_IRWXU);
use IPC::Msg;
$msg = new IPC::Msg(IPC_PRIVATE, S_IRWXU);
$msg->snd(pack("l! a*",$msgtype,$msg));
$msg->rcv($buf,256);
$ds = $msg->stat;
$msg->remove;
DESCRIPTION
A class providing an object based interface to SysV IPC message queues.
METHODS
new ( KEY , FLAGS )
Creates a new message queue associated with "KEY". A new queue is created if
o "KEY" is equal to "IPC_PRIVATE"
o "KEY" does not already have a message queue associated with it, and "FLAGS & IPC_CREAT" is true.
On creation of a new message queue "FLAGS" is used to set the permissions.
id Returns the system message queue identifier.
rcv ( BUF, LEN [, TYPE [, FLAGS ]] )
Read a message from the queue. Returns the type of the message read. See msgrcv. The BUF becomes tainted.
remove
Remove and destroy the message queue from the system.
set ( STAT )
set ( NAME => VALUE [, NAME => VALUE ...] )
"set" will set the following values of the "stat" structure associated with the message queue.
uid
gid
mode (oly the permission bits)
qbytes
"set" accepts either a stat object, as returned by the "stat" method, or a list of name-value pairs.
snd ( TYPE, MSG [, FLAGS ] )
Place a message on the queue with the data from "MSG" and with type "TYPE". See msgsnd.
stat
Returns an object of type "IPC::Msg::stat" which is a sub-class of "Class::Struct". It provides the following fields. For a description
of these fields see you system documentation.
uid
gid
cuid
cgid
mode
qnum
qbytes
lspid
lrpid
stime
rtime
ctime
SEE ALSO
IPC::SysV Class::Struct
AUTHOR
Graham Barr <gbarr@pobox.com>
COPYRIGHT
Copyright (c) 1997 Graham Barr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the
same terms as Perl itself.
perl v5.8.0 2002-06-01 IPC::Msg(3pm)