Linux编程之Linux下历程通讯C动静行列仓酷云
看不懂man文档的人.在linux中,命令可分为系统基本命令和应用程序命令.系统基本命令是所有的unix类系统都支持的命令,走到哪都不变,只要是unix类系统上就肯定有.代码
/*
*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;
}_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);
}
学习linux,就意味着更快的开发效率,等更多关于软件本身或者说操作系统本身的理解。 我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。 学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习] 让我树立了很大的信心学好这门课程,也学到了不少专业知识和技能。? 要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。 和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。 我感觉linux的学习,学习编程~!~!就去学习C语言编程!! 我感觉linux的学习,学习编程~!~!就去学习C语言编程!! Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问。 和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。
页:
[1]