/*
@gcc version 3.2.2 20030222
@Linux version 2.4.20-8
*/
/*
@function:create
*/
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
int c, oflag, mqid;
key_t keyMsg;
oflag = 0666|IPC_CREAT;
while( (c=getopt(argc, argv, "e")) != -1 )
{
switch(c)
{
case 'e':
oflag |= IPC_EXCL;
break;
}
}
if( optind != argc-1 )
{
cout<<"usage:msgcreate[-e] <pathname>"<<endl;
return 0;
}
keyMsg = ftok(argv[optind], 0);
if( keyMsg==-1 )
{
cout<<"err keyMsg:"<<endl;
return 0;
}
mqid = msgget(keyMsg, oflag);
if( mqid==-1 )
{
cout<<"err megget:"<<strerror(errno)<<endl;
return 0;
}
return 0;
}
/*
@function:send
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
int mqid, iResult;
size_t len;
long type;
struct msgbuf *ptr;
if(argc != 4)
{
cout<<"usage:msgsnd <pathname> <#bytes> <type>"<<endl;
return 0;
}
len = atoi(argv[2]);
type = atoi(argv[3]);
mqid = msgget(ftok(argv[1],0), 060);
if( mqid==-1 )
{
cout<<"err msgget:"<<strerror(errno)<<endl;
return 0;
}
ptr = (struct msgbuf *)calloc(sizeof(long)+len, sizeof(char));
ptr->mtype=type;
iResult = msgsnd(mqid, ptr, len, 0);
if(iResult == -1)
{
cout<<"err msgsnd:"<<strerror(errno)<<endl;
free(ptr);
return 0;
}
free(ptr);
return 0;
}
/*
@function:recv
*/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <iostream>
using namespace std;
#define MAXMSG (8192+sizeof(long))
int main(int argc, char **argv)
{
int c, flag, mqid;
long type;
ssize_t n;
struct msgbuf *buff;
type = flag = 0;
while( (c=getopt(argc, argv, "nt:")) != -1 )
{
switch(c)
{
case 'n':
flag |= IPC_NOWAIT;
break;
case 't':
type = atoi(optarg);
break;
}
}
if( optind != argc-1 )
{
cout<<"argc err: usage:msgrcv [-n] [-t type] <pathname>"<<endl;
}
mqid = msgget( ftok(argv[optind], 0), 040 );//rwx:only read
buff = (struct msgbuf *)malloc(MAXMSG);
n = msgrcv( mqid, buff, MAXMSG, type, flag );
if(n==-1)
{
cout<<"msgget err:"<<strerror(errno)<<endl;
free(buff);
return 0;
}
cout<<"buff.mtype:"<<buff->mtype<<endl;
free(buff);
return 0;
}
/*
@function:rmid
*/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
int mqid, iResult;
if(argc != 2)
{
cout<<"usage:msgrmid <pathname>"<<endl;
return 0;
}
mqid = msgget(ftok(argv[1], 0), 0);
if( mqid==-1 )
{
cout<<"err msgget:"<<strerror(errno)<<endl;
return 0;
}
iResult = msgctl(mqid, IPC_RMID, NULL);
if(iResult == -1)
{
cout<<"err msgctl:"<<strerror(errno)<<endl;
return 0;
}
return 0;
}
分享到:
相关推荐
hook send recv wsasend wsarecv 封包工具源码 本工具支持命令行操作,采用远程线程注入目标进程,注入后hook发包函数,实现封包拦截。 主程序为MFC编写 动态链接库VC WIN32项目
send recv nit linux 下recv send
send 和recv 详解,绝对好东西。
udp 测试程序 udp 测试程序 udp 测试程序 udp 测试程序
HOOK SEND RECV函数拦截网络封包的程序
Socket下send和recv使用的说明及介绍
针对爱特梅尔的SAMA5D3X-EK评估版,RS485串口操作例子。
Software caused connection abort: recv failed
UDP运输层协议,本代码将实现udp服务器端接受数据,udp客户端接收数据
不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。
serial_send_recv.c
OctoPrint-BedLevelVisualizer 该插件将支持床网格整平的各种固件的输出可视化,特别是Prusa G81网格整平报告和Marlin G29 T床地形报告。 请注意,要使用此插件,您的3D打印机需要在软件中支持床网格...Recv: (0,9)
坎皮特征从组件接收数据过滤消息我们每秒想读多少条消息确保他们实际上得到了解释查询设备默认情况下不发送消息C模块解释数据(==查看此内容,它是否来自c-> python?==) 智能路由输入电流能量可能会使我们减速或...
主要介绍了PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法,需要的朋友可以参考下
里面有socket函数和recv函数的详细讲解,有用
对应 C++ 简易TCPClient实现及简要特性测试 的代码
epoll机制epoll_create、epoll_ctl、epoll_wait、close(在epoll的ET模式下,read和write或send和recv当返回值0且errno=EAGAIN - linking530的专栏 - CSDN博客.mht
封包助手是一个能拦截网络应用程序数据包的纯绿色软件(压缩包不足400KB,无插件无病毒,不需安装),包括Send,Recv,WSASend,WSARecv,SendTo,RecvFrom,WSASendTo,WSARecvFrom。 封包助手还可以拦截Connect和Accept...
温索克胡克挂钩winsock send&recv以读取进程的所有流量
python 零基础学习篇