Sponsored Content
Top Forums Programming Message queue is not blocked in msgsnd Post 302558018 by alexse on Thursday 22nd of September 2011 02:04:58 PM
Old 09-22-2011
Network Message queue is not blocked in msgsnd

Hi, I am trying to send/receive data by message queue and expecting it to be blocked on send/read for other side (at least this is my understooding ) , I am connecting message between perl<->C , perl is working as expected , but in C msgsnd and msgrcv are not waiting (blocked) untill second side will read/write .
Here is a code I am using :

QueueId = msgget(QueueKey, 0777 | IPC_CREAT | IPC_EXCL );
if ((status=msgsnd(QueueId, &MsgBuf, s.length()+1, 0)) == -1) { /* +1 for '\0' */
fprintf(stderr,"Failing to send a message: \"%s\"...\n",s.c_str()),
msgctl(QueueId, IPC_RMID, NULL);
exit(-1);
};
msgrcv(QueueId, &MsgBuf, sizeof(MsgBuf.mtext), 0, 0);


Appreciate any help
 

10 More Discussions You Might Find Interesting

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

2. Programming

a message queue question..

Hi there: Thanks first. When I use a message queue amony severl processes, will I have to synchronize the queue? I don't think I would have to because a message queue is implemented in a link listed. Correct me If I am wrong... (0 Replies)
Discussion started by: yanhu
0 Replies

3. Programming

Message Queue Problem Again..

Is there any way one can delete , say , a particular message from a message queue on system V? (2 Replies)
Discussion started by: satansfury
2 Replies

4. Programming

Message Queue with fork() help

hi all... ive been trying this program where i spawn 4 threads... and i am trying to use message queue to send msgs from 3 of the threads to the parent thread... but it doent seem to be working... ive almost pulled out my hair tryin to fix the prob :confused: another wierd thing... (1 Reply)
Discussion started by: strider
1 Replies

5. Programming

message queue

Hello, i need to write a message queue "chat server", that should work only localy. Can anyone please help me with some ideas and peshaps code. I'm studying the UNIX IPC mechanisms right now. So far, i understand how it works but i still cannot get an idea how to write a chat programm... ... (2 Replies)
Discussion started by: etenv
2 Replies

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

7. Programming

Message Queue Problem

Hi all, I need help about message queues, i have a server-client program that communicates each other via msg queue, firstly server opens its msg queue and waits for msg then client opens server msg queue and its own msg queue(for receiving msg from server,clients sends msg to server msg... (7 Replies)
Discussion started by: SaTYR
7 Replies

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

9. Ubuntu

Message Queue in Linux

Hello How can I see the created message queues in the system? (4 Replies)
Discussion started by: xyzt
4 Replies

10. UNIX for Dummies Questions & Answers

Denyhosts displaying warning message for users blocked

Hi, I have a dilemma.I am running denyhosts on one of our servers and it monitors illegal ssh/ftp loggins. I am running vsftpd. My manager though has put an additional requirement on me. When someone is blocked my denyhosts he want an error message to be displayed: " YOUR ACCOUNT HAS BEEN... (0 Replies)
Discussion started by: mojoman
0 Replies
MSGRCV(2)						      BSD System Calls Manual							 MSGRCV(2)

NAME
msgrcv -- receive a message from a message queue LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); DESCRIPTION
The msgrcv() function receives a message from the message queue specified in msqid, and places it into the structure pointed to by msgp. This structure should consist of the following members: long mtype; /* message type */ char mtext[1]; /* body of message */ mtype is an integer greater than 0 that can be used for selecting messages, mtext is an array of bytes, with a size up to that of the system limit (MSGMAX). The value of msgtyp has one of the following meanings: o The msgtyp argument is greater than 0. The first message of type msgtyp will be received. o The msgtyp argument is equal to 0. The first message on the queue will be received. o The msgtyp argument is less than 0. The first message of the lowest message type that is less than or equal to the absolute value of msgtyp will be received. The msgsz argument specifies the maximum length of the requested message. If the received message has a length greater than msgsz it will be silently truncated if the MSG_NOERROR flag is set in msgflg, otherwise an error will be returned. If no matching message is present on the message queue specified by msqid, the behavior of msgrcv() depends on whether the IPC_NOWAIT flag is set in msgflg or not. If IPC_NOWAIT is set, msgrcv() will immediately return a value of -1, and set errno to ENOMSG. If IPC_NOWAIT is not set, the calling process will be blocked until: o A message of the requested type becomes available on the message queue. o The message queue is removed, in which case -1 will be returned, and errno set to EINVAL. o A signal is received and caught. -1 is returned, and errno set to EINTR. If a message is successfully received, the data structure associated with msqid is updated as follows: o msg_cbytes is decremented by the size of the message. o msg_lrpid is set to the pid of the caller. o msg_lrtime is set to the current time. o msg_qnum is decremented by 1. RETURN VALUES
Upon successful completion, msgrcv() returns the number of bytes received into the mtext field of the structure pointed to by msgp. Other- wise, -1 is returned, and errno set to indicate the error. ERRORS
The msgrcv() function will fail if: [EINVAL] The msqid argument is not a valid message queue identifier. The message queue was removed while msgrcv() was waiting for a message of the requested type to become available on it. The msgsz argument is less than 0. [E2BIG] A matching message was received, but its size was greater than msgsz and the MSG_NOERROR flag was not set in msgflg. [EACCES] The calling process does not have read access to the message queue. [EFAULT] The msgp argument points to an invalid address. [EINTR] The system call was interrupted by the delivery of a signal. [ENOMSG] There is no message of the requested type available on the message queue, and IPC_NOWAIT is set in msgflg. SEE ALSO
msgctl(2), msgget(2), msgsnd(2) HISTORY
Message queues appeared in the first release of AT&T System V UNIX. BSD
July 9, 2009 BSD
All times are GMT -4. The time now is 05:02 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy