Sponsored Content
Top Forums Programming Please help:program hang stuck there signal handling on POSIX Message Queue UNIX C programming Post 302530712 by ouou on Tuesday 14th of June 2011 10:43:40 PM
Old 06-14-2011
Java help:wrong behavior code:client-server IPC signal handling on POSIX Message Queue UNIX C programming

in a single main() function,so need signal handling. Use Posix Message Queue IPC mechanism , can ignore the priority and other linked list message,to implement the scenario:

client:Knock Knock
server:who's there
client: Eric
Server:Eric,Welcome.
client:exit
all process terminated

stdin->POSIX MsgQ client send "knock knock" to server->Server compares string and send "who's there" back to client

Below is my code,

What I got is :
client:knock knock
Server:Who's there?
client:eric
eric
client:Exit
Exit


1st round succeed get the right result.From 2nd round, the client put the same typing on console.
Please help. Remember to use gcc -lrt to link mq_function.


Code:
#include <mqueue.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <string.h>
#define MSG_SIZE 100  //max size of msg
#define MAX_MSG 1  //max # of msg
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
static void sig_usr1(int signo) {
    mqflag = 1;
    sigprocmask(SIG_BLOCK, &newmask, &oldmask);
    return;
}


Last edited by ouou; 07-09-2011 at 09:00 PM.. Reason: How to get right indention when place code?
 

10 More Discussions You Might Find Interesting

1. Programming

POSIX Message Queue - Settings

How can I increase the POSIX Msg Q parameter SC_MQ_PRIO_MAX? The maximum is defined as 32. Can I increase the number? If so, how? Deepa (0 Replies)
Discussion started by: Deepa
0 Replies

2. UNIX for Advanced & Expert Users

Unix message Queue

Hi, I am working closly with unix message queues i have encountered the following - after creating the Q and start working with it (pushing & pulling) i receive the following stange parameters on the q's - STIME=no_entry Qnum=0 CBYTES=4140 when this happens, the Q is disabled (meaning i... (3 Replies)
Discussion started by: kel
3 Replies

3. HP-UX

posix ipc message queue

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. Linux

POSIX message queue size

Hi all, Please tell me how to change POSIX message queue maximum size? "ulimit" is not a solution because it controls shell resources. But i need to control queue size before login in and starting the shell. It is needed to limit queue size for applications started before login in. Sorry for my... (7 Replies)
Discussion started by: Vourhey
7 Replies

5. Programming

How to limit max no of message in a posix message queue

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

UNIX Message Queue

Hello !!!!! I have a simple question but i can't find the answer anywhere hope to meet it here. Why it is a bad idea to pass pointers through message queues ? Most structs i see all of their char types are arrays... Is it becase having pointers means we could possibily send wrong bytes ? For... (2 Replies)
Discussion started by: qlyine
2 Replies

7. Shell Programming and Scripting

Move xml files from unix to message queue.

Hi, I need to move the XML files from the UNIX to the message queue. Please help me out to write the code.. Thanks, Mohana Krishnan (0 Replies)
Discussion started by: krishnan_6015@y
0 Replies

8. Programming

POSIX Message Queue Memory Allocation

Hi, I wanted to know whether the POSIX message queues are statically allocated memory by the kernel based on the parameters specified in the open or as and when we send messages, memory are allocated? Does the kernel reserve the specified memory for the message queue irrespective of whether... (1 Reply)
Discussion started by: sumtata
1 Replies

9. AIX

Print jobs stuck in queue

Hi, have an aix system with something I've never seen happening. All printers are not printing. I see jobs Queued and printer status as READY but jobs just keep getting queued and nothing's printing. Seems to be a system wide problem since it's affecting all printers. Help... (2 Replies)
Discussion started by: flash88
2 Replies

10. Programming

POSIX message queue mq_open directory

hello, I try to test the POSIX mq_open function on book unp like below: #include "unpipc.h" # include <mqueue.h> int main(int argc, char **argv) { int c, flags; mqd_t mqd; flags = O_RDWR | O_CREAT; while ((c = getopt(argc, argv, "e")) != -1) { ... (3 Replies)
Discussion started by: anpufeng
3 Replies
Mail::Message::Head::Delayed(3pm)			User Contributed Perl Documentation			 Mail::Message::Head::Delayed(3pm)

NAME
Mail::Message::Head::Delayed - a not-read header of a Mail::Message INHERITANCE
Mail::Message::Head::Delayed realizes a Mail::Message::Head::Complete Mail::Message::Head::Delayed is a Mail::Message::Head is a Mail::Reporter SYNOPSIS
my $delayed = Mail::Message::Head::Delayed->new(...) $delayed->isa('Mail::Message::Head') # true $delayed->guessBodySize # undef $delayed->isDelayed # true DESCRIPTION
This object is used as place-holder, to be replaced by a Mail::Message::Head when someone accesses the header of a message. OVERLOADED
overload: ""() See "OVERLOADED" in Mail::Message::Head overload: bool() See "OVERLOADED" in Mail::Message::Head METHODS
Constructors $obj->build(FIELDS) You cannot create a delayed header with fields. Mail::Message::Head::Delayed->new(OPTIONS) See "Constructors" in Mail::Message::Head The header $obj->isDelayed() See "The header" in Mail::Message::Head $obj->isEmpty() See "The header" in Mail::Message::Head $obj->isModified() See "The header" in Mail::Message::Head $obj->knownNames() See "The header" in Mail::Message::Head $obj->message([MESSAGE]) See "The header" in Mail::Message::Head $obj->modified([BOOLEAN]) See "The header" in Mail::Message::Head $obj->orderedFields() See "The header" in Mail::Message::Head Access to the header $obj->get(NAME [,INDEX]) Get the information about the header line NAME. Realization will take place. $obj->study(NAME [,INDEX]) See "Access to the header" in Mail::Message::Head About the body $obj->guessBodySize() On a delayed head, this retuns "undef", because when there is no header there is also no body. For messages in directory or network organized folders, Mail::Message::size() usually will give a figure for the whole message without much cost. Subtract a few hundred bytes for the header, and you will get a good estimate. $obj->guessTimeStamp() Make a guess about when the message was originally posted. On a delayed head, this returns "undef". For messages in directory or network organized folders, Mail::Message::timestamp() usually will give a figure without much cost. $obj->isMultipart() See "About the body" in Mail::Message::Head Internals $obj->addNoRealize(FIELD) See "Internals" in Mail::Message::Head $obj->addOrderedFields(FIELDS) See "Internals" in Mail::Message::Head $obj->fileLocation() See "Internals" in Mail::Message::Head $obj->load() See "Internals" in Mail::Message::Head $obj->moveLocation(DISTANCE) See "Internals" in Mail::Message::Head $obj->read(PARSER) See "Internals" in Mail::Message::Head $obj->setNoRealize(FIELD) See "Internals" in Mail::Message::Head Error handling $obj->AUTOLOAD() See "Error handling" in Mail::Reporter $obj->addReport(OBJECT) See "Error handling" in Mail::Reporter $obj->defaultTrace([LEVEL]|[LOGLEVEL, TRACELEVEL]|[LEVEL, CALLBACK]) Mail::Message::Head::Delayed->defaultTrace([LEVEL]|[LOGLEVEL, TRACELEVEL]|[LEVEL, CALLBACK]) See "Error handling" in Mail::Reporter $obj->errors() See "Error handling" in Mail::Reporter $obj->log([LEVEL [,STRINGS]]) Mail::Message::Head::Delayed->log([LEVEL [,STRINGS]]) See "Error handling" in Mail::Reporter $obj->logPriority(LEVEL) Mail::Message::Head::Delayed->logPriority(LEVEL) See "Error handling" in Mail::Reporter $obj->logSettings() See "Error handling" in Mail::Reporter $obj->notImplemented() See "Error handling" in Mail::Reporter $obj->report([LEVEL]) See "Error handling" in Mail::Reporter $obj->reportAll([LEVEL]) See "Error handling" in Mail::Reporter $obj->trace([LEVEL]) See "Error handling" in Mail::Reporter $obj->warnings() See "Error handling" in Mail::Reporter Cleanup $obj->DESTROY() See "Cleanup" in Mail::Reporter $obj->inGlobalDestruction() See "Cleanup" in Mail::Reporter DIAGNOSTICS
Error: Cannot build() a delayed header. A delayed message header cannot contain any information, so cannot be build. You can construct complete or subset headers. Error: Package $package does not implement $method. Fatal error: the specific package (or one of its superclasses) does not implement this method where it should. This message means that some other related classes do implement this method however the class at hand does not. Probably you should investigate this and probably inform the author of the package. SEE ALSO
This module is part of Mail-Box distribution version 2.105, built on May 07, 2012. Website: http://perl.overmeer.net/mailbox/ LICENSE
Copyrights 2001-2012 by [Mark Overmeer]. For other contributors see ChangeLog. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html perl v5.14.2 2012-05-07 Mail::Message::Head::Delayed(3pm)
All times are GMT -4. The time now is 09:08 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy