c编程:僵尸吃大脑】的更多相关文章

第一行输入一个正整数n 以下每一行输入僵尸已经吃了的大脑数量a,和需要生存必需要吃的大脑数量b.总共n行. 例子输入 3 4 5 3 3 4 3 例子输出 NO BRAINS MMM BRAINS MMM BRAINS 即假设a>=b即输出MMM BRAINS(僵尸能活) 否则输出     NO BRAINS(僵尸不能活下来) 代码: //僵尸吃大脑 #include<stdio.h> int main() { int n; int i; int a,b; int m[20]={0};…
昨日内容回顾 操作系统发展史 1.穿孔卡片 CPU利用率极低 2.联机批处理系统 CPU效率有所提升 3.脱机批处理系统 CPU效率极大提升(现代计算机雏形) 多道技术(单核CPU) 串行:多个任务依次排队执行 多道:切换+保存状态 进程理论 程序与进程的区别 程序是死的进程是活的 进程的调度算法 先来先服务 短作业优先 时间片轮转法+多级反馈队列 进程的三状态 就绪态 运行态 阻塞态(只有经过就绪态的进程才能进入运行态) 任务的提交方式 同步:提交完任务之后原地等待任务的结果 期间不做任何事情…
什么是僵尸进程? 僵尸进程, 指子进程退出后, 父进程还没有回收子进程的资源,这个子进程就处在于僵尸状态. 来看看如何产生? #include <stdio.h> #include <unistd.h> int main(void) { pid_t pid ; //zombie 子进程先退出,父进程没有回收子进程资源 //这就是僵尸进程 //僵尸进程不能被直接杀死,只能通过杀死父进程来终止僵尸进程 pid = fork(); if(pid == 0) { printf("…
     在fork()/exec()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵尸进程.补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程.    定义:         在unix术语中,一个已经终止…
前言 做iOS开发的童鞋都应该会纠结一个问题,那就是在做开发的时候是使用StoryBoard还是使用Nibs又或者是Code(纯代码流)呢?笔者也非常纠结这个问题,今天碰巧在raywenderlich上面看到了几个大神之间的撕逼,哦不,讨论之后,感觉收获良多,于是就将他们讨论的内容整理翻译了一下,如有不当之处,还请多多包涵,原视频请戳这里 http://t.cn/zRAb4NF 讨论 Ray Wenderlich Ok!现在我们都在线,感谢各位的到来,今天我们会有一个讨论关于iOS开发的讨论,是…
如果觉得资源不错,友情转发,贵在分享!!! 少儿编程Scratch: 少儿编程Scratch第一讲:Scratch完美的初体验少儿编程Scratch第二讲:奇妙的接球小游戏少儿编程Scratch第三讲:宇宙大战.枪战游戏少儿编程Scratch第四讲:射击游戏的制作,克隆的奥秘少儿编程第五讲:Scratch练习一坐标和移动少儿编程Scratch第六讲:抽奖游戏之造型.随机和广播少儿编程Scratch第七讲:字母雨打字练习少儿编程Scratch第八讲:变量和太空大战少儿编程Scratch第九讲:小猫…
本节目标: 僵进程 SIGCHLD wait waitpid 一,僵尸进程 当一个子进程先于父进程结束运行时,它与其父进程之间的关联还会保持到父进程也正常地结束运行,或者父进程调用了wait才告终止. 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态. 进程表中代表子进程的数据项是不会立刻释放的,虽然不再活跃了,可子进程还停留在系统里,因为它的退出码还需要保存起来以备父进程中后续的wait调用使用.它将称为一个"僵进程&…
1,io模型: 阻塞io.非阻塞io.io多路复用,信号驱动io. 阻塞Io与非阻塞io的转换,可用fcntl()函数 #include<unistd.h> #include<fcntl.h> int fcntl(int fd,int cmd,...); 2,io多路复用 在应用程序中同时处理多路输入输出流 若采用阻塞模式,将得不到预期的目的 若采用非阻塞模式,对多个输入进行轮询,则浪费CPU资源 若设置多个进程,分别处理一条数据通路,将新产生进程间的同步与通信问题 使得程序变得过…
进程概念及应用 我们知道,监听套接字会有一个等待队列,里面存放着不同客户端的连接请求,如果有一百个客户端,每个客户端的请求处理是0.5s,第一个客户端当然不会不满,但第一百个客户端就会有相当大的意见了.为了要使得所有客户端都尽可能的满意,我们应采用并发服务端,使其同时向所有发起请求的客户端提供服务.而且,网络程序中数据通信时间比CPU运算时间占比更大,因此,向多个客户端提供服务是一种有效利用CPU的方式.接下来讨论同时向多个客户端提供服务的并发服务端,下面提出具有代表性的并发服务端实现模型和方法…
信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非阻塞等待子进程销毁的函数,但有一个不好的缺点就是要每隔一段时间判断子进程是否销毁,只有销毁完后才能执行父进程接下去的程序.这样显然会造成父进程一些资源上的浪费,那么有没有又可以销毁子进程,又不用让父进程等待的解决方案呢?答案当然是有的 子进程终止的识别主体是操作系统,因此,若操作系统能主动告诉通知正忙于执行程序的父进程说,子进程已经终止了,…