The Linux Programming Interface: a linux and unix system Programming Handbook



tải về 6.93 Mb.
Chế độ xem pdf
trang795/806
Chuyển đổi dữ liệu08.07.2022
Kích6.93 Mb.
#52607
1   ...   791   792   793   794   795   796   797   798   ...   806
The Linux Programming Interface

Listing 46-2: Using 
msgsnd()
to send a message
–––––––––––––––––––––––––––––––––––––––––––––––––––––––
svmsg/svmsg_send.c
#include 
#include 
#include "tlpi_hdr.h"
#define MAX_MTEXT 1024
struct mbuf {
long mtype; /* Message type */
char mtext[MAX_MTEXT]; /* Message body */
};
#include  /* For portability */
#include 
int msgsnd(int 
msqid
, const void *
msgp
, size_t 
msgsz
, int 
msgflg
);
Returns 0 on success, or –1 on error


942
Chapter 46
static void /* Print (optional) message, then usage description */
usageError(const char *progName, const char *msg)
{
if (msg != NULL)
fprintf(stderr, "%s", msg);
fprintf(stderr, "Usage: %s [-n] msqid msg-type [msg-text]\n", progName);
fprintf(stderr, " -n Use IPC_NOWAIT flag\n");
exit(EXIT_FAILURE);
}
int
main(int argc, char *argv[])
{
int msqid, flags, msgLen;
struct mbuf msg; /* Message buffer for msgsnd() */
int opt; /* Option character from getopt() */
/* Parse command-line options and arguments */
flags = 0;
while ((opt = getopt(argc, argv, "n")) != -1) {
if (opt == 'n')
flags |= IPC_NOWAIT;
else
usageError(argv[0], NULL);
}
if (argc < optind + 2 || argc > optind + 3)
usageError(argv[0], "Wrong number of arguments\n");
msqid = getInt(argv[optind], 0, "msqid");
msg.mtype = getInt(argv[optind + 1], 0, "msg-type");
if (argc > optind + 2) { /* 'msg-text' was supplied */
msgLen = strlen(argv[optind + 2]) + 1;
if (msgLen > MAX_MTEXT)
cmdLineErr("msg-text too long (max: %d characters)\n", MAX_MTEXT);
memcpy(msg.mtext, argv[optind + 2], msgLen);
} else { /* No 'msg-text' ==> zero-length msg */
msgLen = 0;
}
/* Send message */
if (msgsnd(msqid, &msg, msgLen, flags) == -1)
errExit("msgsnd");
exit(EXIT_SUCCESS);
}
–––––––––––––––––––––––––––––––––––––––––––––––––––––––

tải về 6.93 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   791   792   793   794   795   796   797   798   ...   806




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương