|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
看不懂man文档的人.在linux中,命令可分为系统基本命令和应用程序命令.系统基本命令是所有的unix类系统都支持的命令,走到哪都不变,只要是unix类系统上就肯定有.
代码
[cpp]
/*
*main.cc
*
*Createdon:2010-1-19
*Description:IPC–动静行列的完成
*Copyright:2010@ICTLiHeyuan
*/
#include<sys/types.h>
#include<sys/msg.h>
#include<sys/ipc.h>
#include<sys/types.h>
#include<unistd.h>
#include<fcntl.h>
#include<errno.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedefstruct{
longmtype;
charmtext[10];
}_msgbuf;
constchar*path="/tmp/test_ipc_1234";
intproj_id=123;
intret;
intmain(){
//第零步创立path这个文件
ret=creat(path,S_IRWXU);
if(ret==-1){
printf("createfilefail.n");
exit(-1);
}
//第一步取得key_t(SystemVkey)
key_tkey=ftok(path,‘d’);
if(key==-1){
printf("getkey_tfail.n");
exit(-1);
}
//第二步创立一个message_queue
//这个|S_IRWXU是设置权限,同open的mode参数,最低8位决意
intmsgid=msgget(key,IPC_CREAT|S_IRWXU);
if(msgid==-1){
printf("createmsg_queuefail:%s.n",strerror(errno));
exit(-1);
}
ret=fork();
if(ret==-1){
printf("forkfail.n");
exit(-1);
}elseif(ret==0){
printf("I’mchildpid%dn",getpid());
//第三步子历程发送msgsnd
_msgbufmsg1;
msg1.mtype=4;
strcpy(msg1.mtext,"Hi");
ret=msgsnd(msgid,&msg1,sizeof(_msgbuf),0);
if(ret==-1){
printf("sendmsgfail:%sn",strerror(errno));
}else{
printf("sendmsgsuccess.n");
}
exit(0);
}else{
//第四步父历程承受msgsnd
printf("I’mfatherpid%dn",getpid());
_msgbufmsg1;
ssize_tsize=msgrcv(msgid,&msg1,sizeof(msg1),4,0);
if(size==-1){
printf("rcvmsgfail.n");
}else{
printf("Childsendmeamsg%dbytes,said:%sn",size,msg1.mtext);
}
}
ret=msgctl(msgid,IPC_RMID,NULL);//删除动静行列
if(ret==-1){
printf("unlinkmsgqueueerrorn");
exit(-1);
}
exit(0);
}
[/cpp]
学习linux,就意味着更快的开发效率,等更多关于软件本身或者说操作系统本身的理解。 |
|