当前位置: 首页 > news >正文

营销型网站开发公司电话网站设计开发维护

营销型网站开发公司电话,网站设计开发维护,电商培训班学了有用吗,小微企业名录查询官网1.面试题目1 (1)fork 以后#xff0c;父进程打开的文件指针位置在子进程里面是否一样#xff1f;(先open再fork) (2)能否用代码简单的验证一下? (3)先fork再打开文件父子进程是否共享偏移量?父进程打开的文件指针位置在子进程里面是否一样#xff1f;能否用代码简单验证一…1.面试题目1 (1)fork 以后父进程打开的文件指针位置在子进程里面是否一样(先open再fork) (2)能否用代码简单的验证一下? (3)先fork再打开文件父子进程是否共享偏移量?父进程打开的文件指针位置在子进程里面是否一样能否用代码简单验证一下.(先fork再open会怎么样?) 1).进程打开文件的流程 inode: 文件数据都储存在”块”中那么很显然我们还必须找到一个地方储存文件的元信息比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode中文译名为”索引节点”。 每一个文件都有对应的inode里面包含了与该文件有关的一些信息。通过这个inode节点,即通过文件具体的一些信息,我们才能找到这个文件,读取它. 每个inode都有一个号码操作系统用inode号码来识别不同的文件。 2).先打开再fork的流程(重点)   代码如下: 先创建一个文件file.txt,内容为abcdefg; #include stdio.h #include stdlib.h #include unistd.h #include fcntl.h #include assert.hint main() {int fdopen(file.txt,O_RDONLY);assert(fd!-1);pid_t pidfork();assert(pid!-1);if(pid0){char buff[128]{0};int nread(fd,buff,1);printf(child:%s\n,buff);sleep(1);nread(fd,buff,1);printf(child:%s\n,buff);}else{char buff[128]{0};int nread(fd,buff,1);printf(parent:%s\n,buff);sleep(1);nread(fd,buff,1);printf(parent:%s\n,buff);}close(fd);exit(0); } 父进程打开文件以后,fork产生子进程,父子进程共享打开的文件,同时共享文件偏移量; 为什么?如图: 3).先fork再open 代码修改如下: pid_t pidfork();assert(pid!-1);int fdopen(file.txt,O_RDONLY);assert(fd!-1); (了解文件偏移量不共享) 为什么?如图: 面试题答案: 1在fork 之前打开的文件在复制进程后父子进程共享文件偏移量所以文件指针在相同位置。 (2)代码如上 (3)先fork再打开文件,父子进程各自打开各自的,不共享偏移量;代码如上。 2.面试题目2 4).系统调用与库函数的区别 比如自己写的函数,调用的时候就是调换到函数的入口地址一句一句执行,但是系统调用就不一样,系统调用一旦执行,我们就需要 从用户空间切换到内核空间. 比如fopen :库函数 open:系统调用 fork:系统调用 可以man fopen (显示3),man  2 open (显示2),man  fork (显示2) 系统调用的执行过程: 在Linux中,每个系统调用都被赋予了一个系统调用号.这样,通过这个独一无二的号就可以关联系统调用.当用户空间的进程执行一个系统调用的时候,这个系统调用号就用来指明到底是要执行哪个系统调用号;进程并不会提及系统调用的名称; 系统调用是为了方便使用操作系统的接口,而库函数则是为了人们编程的方便; 库函数调用与系统无关,不同的系统,调用库函数,库函数会调用不同的底层函数实现,因此可移植性好; 5).malloc和free的三个问题: 思考下面三个问题: (1)申请了一块空间没有free,进程就结束了,那么空间被回收了吗? (2)malloc()申请3G的内存能否成功?判断依据是什么? (3)父进程堆区申请的空间复制后,子进程也会有一份,也需要释放? 演示代码: #include stdio.h #include stdlib.h #include unistd.h #include assert.h #include string.hint main() {char *s(char *)malloc(1024ll*1024*1024*3);assert(s!NULL);memset(s,0,1024ll*1024*1024*3);printf(main over!\n);exit(0); } 1.进程在执行的过程中,malloc申请空间,不使用时,没有free就会出现内存泄漏;如果进程结束了,那么所有向操作系统申请的内存都会被回放(释放); 2.申请1G或者更大空间,到底能不能成功? 如果当前的物理内存剩余空间够用,那么申请的空间肯定能成功; 如果不够用,我们先要看有没有虚拟内存,如果没有,不能成功;如果有虚拟内存,那么我们看内存虚拟空间的大小能否满足,如果满足,那么我们是可以申请成功的,如果不够,当然不能成功; 首先我们需要了解一个名词:虚拟内存: 基于分页技术或者分页和分段技术的组合的虚拟内存,是现代计算机中内存管理最常用的方法之一.虚拟内存对应用程序完全透明,使得每个进程在执行时好像有无限的内存可用.为实现这一点,操作系统为每个进程在磁盘上创建一块虚拟地址空间,即虚拟内存.在需要的时候可以把部分虚拟内存载入到正在的内存中.这样,多个进程便可以共享相对比较小的内存.为了使虚拟内存载入到真正的内存中.这样,多个进程便可以共享相对比较小的内存.为了使虚拟内存更为有效,需要硬件机制来执行基本的分页和分段功能,如虚拟地址和实地址之间的地址转换. 虚拟内存提供的三个重要的能力 1 它将主存看成是一个存储在磁盘上的地址空间的高速缓存在主存中只保存活动区域根据需要在磁盘和主存之间来回传送数据使得能够运行比内存大的多的进程。 2 它为每个进程提供了一致的地址空间从而简化了存储器管理. 3 它保护每个进程的地址空间不被其他进程破坏 . 深入理解计算机系统580页:(由此可知2,3) 了解两个命令: sudo swapoff -a;关闭虚拟内存; sudo swapon -a;开启虚拟内存; 若是32位系统申请3G空间一定会失败因为32位系统的用户总空间大小为3G. (3)父进程堆区申请的空间复制后,子进程是不是也会有一份?是不是也需要释放? 我们先来看下面的代码: #include stdio.h #include assert.h #include unistd.h #include stdlib.h int main() {char *s(char *)malloc(128);assert(s!NULL);pid_t pidfork();assert(pid!-1);free(s);exit(0); } 编译运行并没有出错,如果是共享空间的话, 那么父子进程会对一个空间分别free,我们有前面学过的C语言可以知道,如果我们对一个空间free两次,编译运行会出现错误. 所以父子进程堆空间不共享(这里指的是每个进程的堆空间).哪怕父子进程对申请的对空间都没有操作. 其实如果对空间操作也是没有问题的,如下: #include stdio.h #include assert.h #include unistd.h #include stdlib.h #include string.h //1 int main() {char *s(char *)malloc(128);assert(s!NULL);pid_t pidfork();assert(pid!-1);if(pid0)//2{strcpy(s,child);//3}else //4{strcpy(s,parent);//5}printf(s%s\n,s); //6free(s);exit(0); } 结论: 父进程堆区申请的空间复制后,子进程也有一份.也需要释放;也就是说,fork会把进程的上下文都复制一遍,如果是malloc申请的话,内核会给子进程分配和父进程一样多的空间,父子进程都需要分别free;
http://wiki.neutronadmin.com/news/311737/

相关文章:

  • wifi管理网站如何更改wordpress后台登陆密码
  • 深圳租赁住房和建设局网站wordpress 主题库
  • 网站 站外链接设计平面图
  • 301 wordpress深圳个人债务优化
  • 什么叫高端网站定制微商管理系统
  • dede网站百度统计怎么做快速搭建展示型网站
  • 网站开发竞价单页项目管理软件排名
  • 网站后台文件下载婚庆5个坑
  • 高安网站建设打不开wordpress站点
  • 建设网站地图素材连云港做网站推广
  • 网站开发是前端还是焦作整站优化
  • 北京建站工作室建设简单企业网站
  • 电子元器件在哪个网站上做烟台网站建设的方法有哪些
  • 模仿网站建设手机网站根目录
  • 音频文件放到网站空间里生成链接怎么做中国纪检监察报范耀庚
  • 二 网站建设的目的及功能定位郑州市中原区建设局网站
  • 做旅行社网站多少钱国内最新新闻摘抄2023年
  • 门户网站网站开发微指数查询
  • 网站建设修改教程视频教程dw怎样做网站切换
  • 什么叫做网站维护2345浏览器网页版入口官网
  • 国内网站设计案例欣赏自己做qq头像的网站
  • 网站关键词做的越多越好吗wordpress 打开空白
  • 青岛西海岸新区建设网站徐州市城乡建设局官方网站
  • 桐庐网站建设什么是功能型网站
  • 佛山市禅城网站建设vi设计公司排名前十强
  • 乌托邦网站建设网站区域名怎么注册
  • 网站建设方案模版wordpress 开源app
  • 东省住房和城乡建设厅网站小程序登录不上去怎么办
  • 沙田镇网站建设建设网站比较好公司
  • 夺宝网站建设贵阳网上注册公司流程