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

老师留的一道关于使用fork()创建child来并行处理的作业题,请各位大侠给点灵感,跪谢!!!!

    来源: 互联网  发布时间:2015-10-20

    本文导语:  老师让我模拟一个加油站,有三种油放在三个油罐里面,有16个泵可以抽任意一种油,加油车不定时的来给三个油罐加油,抽取速度为1L/10秒,老师让我们利用fork()来实现处理并行的任务. 这个问题好抽象阿,,我是一筹莫展,,...

老师让我模拟一个加油站,有三种油放在三个油罐里面,有16个泵可以抽任意一种油,加油车不定时的来给三个油罐加油,抽取速度为1L/10秒,老师让我们利用fork()来实现处理并行的任务.

这个问题好抽象阿,,我是一筹莫展,,郁闷,,还是自己实力太差.......恳请各位高手指点!!!多谢了!
怎么用C编这种程序阿???

|
//模拟汽车加油

#include 
#include 
#include 
#include 
#include 
#include

#define SPEED 2                   //定义加油的速度,为2秒一个油
#define CAR_COME_RANDTIME 10 //定义车随机来的最大时间
int alarmtime = 1;
int share   = 4; //空闲加油器计数器

/* 此函数用来模拟汽车加油 
*/
int addgas(int req_gas)
{
        while(req_gas-- > 0)
            {
              printf("tcar %d adding gas 1 ,remain %dn", getpid(),req_gas);
              sleep(10/SPEED);        //用睡眠表示正在加油
            }
        return 0;
}

/* 此函数捕捉信号并且根据信号进行有关的控制
*/
void catsig(int signo)
{
        pid_t pid;
        int req = 0;
        alarm(alarmtime);             //设置发生时间信号计时器
        alarmtime = 1+(int)(((float)CAR_COME_RANDTIME)*rand()/(RAND_MAX+1.0));
        if(share > 0)          //有空闲的加油器则分配子进程进行加油
{ share--;          //让空闲加油器计数器减一
    if((pid = fork()) 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 那位老师帮我看看怎么给加个注释#
  • 烦请老师们给个详细的分区方案,非常感谢
  • echo -e 与echo -n的区别,我们老师是不是说错了 iis7站长之家
  • ?老师 ?
  • 请问各位老师fedora 8下不能出声音,怎么解决?
  • 请各位老师给出个主意
  • 各位老师,请问如何将resin2.1.4的目录浏览去掉!
  • VJ就是烂, 我都快用出心脏病来了,该死的老师偏要用他,现在终于解脱了
  • 找一本伍云辉老师的linux服务器配置与管理的书?哪位仁兄有?
  • 请教老师:linux系统大家是如何备份的啊?
  • 急压!哪里有廖若雪老师编的《JSP高级编程》的原码?
  • 初中计算机老师给我们出过一道题,那时候印象很深
  • 开始在Linux 下开发,拜一些老师,薄礼请笑纳。
  • 升级GCC版本,请老师指教
  • 关于main()函数参数调用的问题,老师请进~谢谢
  • echo -e 与echo -n的区别,我们老师是不是说错了
  • 老师请进:关于getrlimit怎么结束子程序还有如何取得子进程占用的虚拟内存?
  • 高分请教--老师布置的作业
  • 聘请JSP/BEA/Oracle辅导老师解决技术问题
  • 怎么才能够把linux添加到启动选项里,可以选择启动?希望知道的老师GGJJ们指点一下


  • 站内导航:


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

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

    浙ICP备11055608号-3