当前位置:  技术问答>linux和unix

UNIX的C编程问题啦..请大家帮帮忙啦,谢谢

    来源: 互联网  发布时间:2015-09-11

    本文导语:  有三段简单的小程序,要求修改其中的某些东西,如下 参考que.h,queuesnd.c和queuercv.c,并改写它们,使放入队列的消息是一个已存在文件的内容(假设该文件长度小于que.h中定义的常数MAXOBN,即只需占一个消息)。就是只...

有三段简单的小程序,要求修改其中的某些东西,如下
参考que.h,queuesnd.c和queuercv.c,并改写它们,使放入队列的消息是一个已存在文件的内容(假设该文件长度小于que.h中定义的常数MAXOBN,即只需占一个消息)。就是只要改变输入到队列的信息的方式就行了

程序如下
/* que.h--- header for message IPC */
#include 
#include 
#include 
#include 
#include 
#define QKEY       (key_t)0206   /* 消息队列的标识符 */
#define QPERM      0660          /* 对队列的读写权限 */
#define MAXOBN     50            /* 消息的长度       */
#define MAXPRIOR   10            /* 优先数的最大值   */

struct q_entry
{ long mtype;
  char mtext[MAXOBN+1];
};
*************************************************************
/* queuercv.c--- 从队列中取一个优先级最高的消息 */

#include 
#include 
#include "que.h"
main()
{
   pid_t  pid;
   switch(pid=fork())
   {  case 0:
           sleep(1);
           serve();
           break;
      case -1:
           printf("Error: warning: fork to start serving failed");
           break;
      default:
           printf("Server process pid is %dn",pid);
   }
   /* 没有出错返回0,否则返回1 */
   exit(pid!=-1?0:1);
}

/* proc_obj---  对消息作处理 */
int proc_obj(struct q_entry *msg)
{
   printf("npriority:%ld   name:%s n", msg->mtype, msg->mtext);
}

/* init_queue--- get queue identifier */
int init_queue(void)
{
   int queue_id;
   /* 创建或打开消息队列,队列标识为QKEY  */
   if ((queue_id=msgget(QKEY, IPC_CREAT|QPERM))==-1)
     perror("msgget failed");
     return(queue_id);
}
/* serve--- 处理队列中具有最高优先级的成员,优先数越小优先级越高 */
int serve(void)
{  int mlen,r_qid;
   struct q_entry  r_entry;
   
   /* initialize message queue */
   if ((r_qid=init_queue())==-1)
      return(-1);
    /* 获取并处理下一个消息 */
   for (;;)
   {
       if ((mlen=msgrcv(r_qid,&r_entry,MAXOBN,(-1*MAXPRIOR),MSG_NOERROR))==-1)
       {  perror("msgrcv failed");
          return(-1);
       }
       else
       {  /* 保证 mtext 是一个字符串 */
          r_entry.mtext[mlen]='';
          
          /* 处理消息 */
          proc_obj(&r_entry);
       }
   }
}
**********************************************************
/* queuesnd.c--- 把一个消息放到队列 */

#include 
#include 
#include "que.h"

main(int argc,char * argv[])
{  int priority;

   if (argc!=3)
   { printf("Error: Usage:%s objname priorityn",argv[0]);
     exit(1);
   }
   
   if ((priority=atoi(argv[2]))MAXPRIOR)
   { printf("%s",argv[2]);
    printf("Error: warning:%s n","invalid priority");
     exit(2);
   }
   
   if (enter(argv[1],priority)MAXOBN)
   { printf("Error. warning:%s n","name too long");
     return(-1);
   }
   
   if ((priority>MAXPRIOR || priority

    
 
 

您可能感兴趣的文章:

  • SCO_UNIX 的一些问题, 请各位帮帮忙!!
  • 文件名为“apue.tar.Z”的文件在UNIX下怎么打开?大家帮帮忙
  • 我就想要下载个简单的UNIX操作系统,做学习用.各位朋友,帮帮忙吗..
  • 在UNIX下自动运行程序的问题,有经验的来帮帮忙!
  • 关于unix/linux c编译器(帮帮忙,给分)
  • UNIX环境下建立虚拟主机问题(大侠们帮帮忙啊)
  • 刚刚当了一个SCO UNIX5.05 但不知如何安装。请大家帮帮忙我是菜鸟:)
  • 帮帮忙,100分奉上,一定给分,unix下写个简单的脚本
  • 【高分求解】 请帮帮忙,修改这个UNIX shell程序 【UP有分】 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  • Unix下配置apache 想做一个webserver?--帮帮我
  • 各位大侠:linux/unix下有什么双字节的字符类型及其一整套处理函数? 高分送出,请帮帮小弟!!!!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高级UNIX编程和UNIX环境高级编程是不是一本书
  • 读过 Unix网络编程 或者 熟知Unix网络编程的 的进来看一下
  • 想看linux内核源代码,另外手头上有一本《unix环境高级编程》,需要先把《unix环境高级编程》看完之后再看内核吗?
  • 我下载了UNIX环境高级编程的源码,可是打开时有错误,怎么才可以打开?还有谁有《UNIX环境高级编程(英文版)》的chm格式的ebook?
  • 【高分求解】 请帮帮忙,修改这个UNIX shell程序 【UP有分】 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ iis7站长之家
  • 想学linux下程序开发,不知道买哪本书好《UNIX环境高级编程》(中文第一版)还是《UNIX环境高级编程》(英文第二版)
  • unix编程与linux编程有什么区别?
  • [学习UNIX编程]初学UNIX编程,遇到一个小小的问题,烦劳大虾帮忙解惑,谢谢!
  • 看Unix环境高级编程,提到了V和bsd,有很多不同,但是没有提到Linux,请问linux跟BSD或者unix V 编程细节哪些不同的,特别是线程,进程,和socke
  • 都说《UNIX环境高级编程》好,对于学linux编程好不好?《Linux下的c编程》《嵌入式系统C编程》那个更适合初学者?各是那个出版社的?(
  • 我初学 Unix 编程,在看《Unix环境高级编程》时有一个问题请指教。
  • 我学&用Linux编程,手里有《UNIX环境高级编程》,看它行吗?
  • 谁有介绍UNIX下面函数的书啊,类似UNIX编程参考手册的东西
  • UNIX编程艺术,了解unix文化强烈推荐这本书
  • UP有分,推荐几本书给我吧,兄弟们,UNIX入门与编程的与编程的,
  • 学Linux编程前要学Unix吗?哪里有学Linux编程的好书下载?
  • 入门问题,我想向UNIX编程方向发展,单目前不会UNIX,我该如何做
  • 请问:如果懂unix编程,那么会懂linux编程吗?一般来说:它们有什么关系呢?
  • 都说《UNIX环境高级编程》好,对于学linux编程好不好?是那个出版社的,是中文版吗?
  • 学习UNIX编程应该从那里入手?
  • java命名空间java.util.regex类pattern的类成员方法: unix_lines定义及介绍
  • 关于UNIX的历史 : 1973年,K.Thompson和D.M.ritchie,用C改写UNIX。那么,在此之前,UNIX是用什么写的?
  • unix/Linux下c++ boost thread库读写锁介绍
  • 没有unix系统我如何学习unix
  • php将标准字符串格式时间转换成unix时间戳_strtotime
  • unix盘哪里有下载的??哪里有比较好的unix论坛??万分感谢!!!!!!!!!
  • php将unix时间戳转换成字符串时间函数(date)
  • 急!装完unix5.06,再装win2000。重启后不能进unix.
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • UNIX特急!!!digital unix问题,请专家快来!!!
  • UNIX支持中文否,请推荐UNIX好书


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3