📄 pgm_ipc_msgq_server.c
字号:
/* SERVER-receives messages from clients */
#include "local.h"
#include <iostream>
#include <cstdio>
#include <ctype.h>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[ ])
{
int mid, n;
MESSAGE msg;
void process_msg(char *, int);
cout<<"Server is active"<<endl;
if (argc != 3)
{
cerr << "Usage: " << argv[0] << " msq_id &" << endl;
return 1;
}
mid = atoi(argv[1]);
while (1)
{
memset( msg.buffer, 0x0, BUFSIZ );
if ((n=msgrcv(mid, &msg, BUFSIZ, SERVER, 0)) == -1 )
{
perror("Server: msgrcv");
return 2;
}
else if (n == 0)
break;
process_msg(msg.buffer, strlen(msg.buffer));
msg.msg_to = msg.msg_fm;
msg.msg_fm = SERVER;
n += sizeof(msg.msg_fm);
if (msgsnd(mid, &msg, n, 0) == -1 )
{
perror("Server: msgsnd");
return 3;
}
}
cout<<"server ends"<<endl;
msgctl(mid, IPC_RMID, (struct msqid_ds *) 0 );
exit(0);
}
/*
Convert lowercase alphabetics to uppercase
*/
void process_msg(char *b, int len)
{
for (int i = 0; i < len; ++i)
if (isalpha(*(b + i)))
*(b + i) = toupper(*(b + i));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -