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

龙岗区住房建设局网站网站做收款要什么条件

龙岗区住房建设局网站,网站做收款要什么条件,c2c网站模板,c2c代表网站进程实验课笔记 本节需要有linux基础#xff0c;懂基本的linux命令操作即可。 Ubuntu镜像下载 https://note.youdao.com/s/VxvU3eVC ubuntu安装 https://www.bilibili.com/video/BV1j44y1S7c2/?spm_id_from333.999.0.0 实验环境ubuntu22版本#xff0c;那个linux环境都可以…进程实验课笔记 本节需要有linux基础懂基本的linux命令操作即可。 Ubuntu镜像下载 https://note.youdao.com/s/VxvU3eVC ubuntu安装 https://www.bilibili.com/video/BV1j44y1S7c2/?spm_id_from333.999.0.0 实验环境ubuntu22版本那个linux环境都可以mit这套课程的实验环境是xv6这种类unix远古的环境都可以那么正常环境都是没问题的当然windows环境应该也是可以的这里主要是Linux环境。 gcc基础 这里用一个helloworld演示 注意linux所有文件的后缀都是无意义的我们这里标识.c只是单纯标识 当然先写代码 一步到位gcc hello.c 这条命令隐含执行了 (1)预处理 (2)编译 (3)汇编 (4)链接 这里未指定输出文件默认输出为a.out gcc编译C源码有四个步骤 预处理 ---- 编译 ---- 汇编 ---- 链接 现在我们就用gcc的命令选项来逐个剖析gcc过程。 在该阶段编译器将C源代码中的包含的头文件如stdio.h添加进来 参数”-E” gcc –E hello.c –o hello.i 第一步预处理的过程我们可以看下系统给我们做了什么 只加了注释这里看不到汇编代码那就算了 继续下一步 编译 gcc –S hello.i –o hello.s 这里报错了 看起来不需要头文件 注释掉 重新预处理和编译注意这里要重新来 可以了 我们看下文件 转化成汇编了不出所料 不多深究了继续 链接 其实就是解析汇编代码了 gcc –c hello.s –o hello.o 链接其实就是做成exe文件 gcc hello.o -o hello 这步可以理解成加壳 注意要执行给权限随便怎么给我给777 lab1获取进程号 #include stdio.h #include sys/types.h #include unistd.h int main(int argc, char const *argv[]) { // getpid()函数返回当前进程的ID号 printf(Before fork Process id:%d\n, getpid()); printf(After fork Process id:%d\n, getpid()); pause(); return 0; }我们运行一下 我们打开另外一个terminal 实验二子进程与父进程的pid #include stdio.h #include sys/types.h #include unistd.h int main(int argc, char const *argv[]) { //pid_t是数据类型实际上是一个整型 //通过typedef重新定义了一个名字用于存储进行ID pid_t pid; //parent pid pid_t cid; //child pid // getpid()函数返回当前进程的ID号 printf(Before fork Process id:%d\n, getpid());fork(); printf(After fork Process id:%d\n, getpid()); pause(); return 0; }为什么执行了三遍呢 这里我们可以看出父进程执行了两次而子进程执行了一次 我们再看下进程状况 至于为什么父进程执行了两边呢 这就和我们系统创建子进程的过程相关了创建子进程的第一步就是将父进程的内存数据全部clone一份然后放入一份新的属于子进程的内存区域中。这样也就代表他们的内存中的text区域数据是一样的这样他们就会执行相同的代码。当然这里是并发执行那么父子进程都要执行一遍fork函数之后的代码注意这里字进程是在fork函数执行时被唤醒的所以子进程虽然有父进程的代码但是子进程也只会并发执行fork函数后面的代码也就是从fork函数开始执行。 这里我们需要注意这里并发执行虽然是父进程唤醒子进程但是由于并发的机制让我们用户基本感受不到谁先执行所以理论上来说我们可以让父进程执行的时间更长一些比如调用write输出i/o设备产生的结果时间更长这样就可以做到父进程还没有输出但是子进程却已经输出结果了让我们产生子进程优先执行的错觉。 实验三fork函数返回值 先看下fork函数的返回值 #include unistd.h int main(int argc, char const *argv[]) { //pid_t是数据类型实际上是一个整型 //通过typedef重新定义了一个名字用于存储进行ID pid_t pid; //parent pid //为了防止误判先给cid一个值 pid_t cid8; //child pid // getpid()函数返回当前进程的ID号 printf(Before fork Process id:%d\n, getpid());cid fork(); printf(cid%d\n, cid); pause(); return 0; } 那么这个0是什么呢 如果成功创建子进程对于父子进程fork会返回不同的值对于父进程它的返回值是子进程的pid号而对于子进程他返回值是0这里猜测这个0大概率是内核模式。如果创建失败cid返回值为-1 实验四并发与父子内存数据复制 并发 #include stdio.h #include sys/types.h #include unistd.h #include sys/wait.h int main(int argc, char const *argv[]) { pid_t cid; //child pid printf(Before fork Process id:%d\n, getpid()); cid fork(); if (cid 0){ // 该分支是子进程执行的代码printf(Child process id (my parent pid is %d):%d\n, getppid(),getpid());for(int i 0; i 3; i){printf(hello\n);} }else{ // 该分支是父进程执行的代码printf(Parent Process id: %d\n,getpid());for(int i 0; i 3; i){printf(world\n);} wait(NULL); } return 0; }这里可以看出结果是父进程还是比子进程先执行但是这个并看不出并发 我们将for循环增加次数直接增加到3000次 #include stdio.h #include sys/types.h #include unistd.h #include sys/wait.h int main(int argc, char const *argv[]) { pid_t cid; //child pid printf(Before fork Process id:%d\n, getpid()); cid fork(); if (cid 0){ // 该分支是子进程执行的代码for循环增加次数printf(Child process id (my parent pid is %d):%d\n, getppid(),getpid());for(int i 0; i 3000; i){printf(hello\n);} }else{ // 该分支是父进程执行的代码for循环增加次数printf(Parent Process id: %d\n,getpid());for(int i 0; i 3000; i){printf(world\n);} wait(NULL); } return 0; }这一段输出我们可以看出父进程与子进程是你执行一下我执行一下前面那个是因为进程执行输出数据太少看不出并发执行。 父子内存数据复制 我们前面说子进程是将父进程的内存空间数据copy了一份那么我们现在设置一个值看下子进程读取是否会有问题 #include stdio.h #include sys/types.h #include unistd.h #include sys/wait.h int main(int argc, char const *argv[]) {pid_t cid; //child pid printf(Before fork Process id:%d\n, getpid()); int value 100; cid fork(); if (cid 0){ printf(Child process id (my parent pid is %d):%d\n, getppid(),getpid()) for(int i 0; i 3; i){ printf(hello(%d)\n,value--); } }else{ printf(Parent Process id: %d\n,getpid()); for(int i 0; i 3; i){ printf(world(%d)\n,value); } wait(NULL); } return 0; }这里我们可以看出子进程和父进程的value值确实是一样的 #include stdio.h #include sys/types.h #include unistd.h #include sys/wait.h int main(int argc, char const *argv[]) { pid_t cid; //child pid printf(Before fork Process id:%d\n, getpid()); cid fork(); if (cid 0){ printf(Child process id (my parent pid is %d):%d\n, getppid(),getpid()); for(int i 0; i 3; i){ printf(hello\n); } }else{ printf(Parent Process id: %d\n,getpid()); for(int i 0; i 1; i){ printf(world\n); } //wait(NULL); } return 0; } 我们ps -ef看下 我们可以看出这子进程的父进程是systemd这个进程 其实出现这个现象的原因是因为我们没有在父进程中加wait函数那么父进程由于执行的太快快到父进程唤醒子进程的过程还没开始父进程就已经被执行完了那么父进程已经进入终止状态cpu使用权回到了systemd这个进程上那么只能是systemd这个进程去调用子进程所以现在子进程的父进程号就变成了systemd的进程号了。 解决上面这个问题我们就必须要要让父进程等待子进程直到子进程执行完再把cpu使用权返回给systemd。 #include stdio.h #include sys/types.h #include unistd.h #include sys/wait.h int main(int argc, char const *argv[]) { pid_t cid; //child pid printf(Before fork Process id:%d\n, getpid()); cid fork(); if (cid 0){ printf(Child process id (my parent pid is %d):%d\n, getppid(),getpid()); for(int i 0; i 3; i){ printf(hello\n); } }else{ printf(Parent Process id: %d\n,getpid()); for(int i 0; i 1; i){ printf(world(%d)\n,getppid()); } wait(NULL); //等待子进程结束再返回里面参数一般是空指针 } return 0; }
文章转载自:
http://www.morning.kgfsz.cn.gov.cn.kgfsz.cn
http://www.morning.rpwht.cn.gov.cn.rpwht.cn
http://www.morning.lrnfn.cn.gov.cn.lrnfn.cn
http://www.morning.pngfx.cn.gov.cn.pngfx.cn
http://www.morning.lnrhk.cn.gov.cn.lnrhk.cn
http://www.morning.wtbzt.cn.gov.cn.wtbzt.cn
http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn
http://www.morning.tyjp.cn.gov.cn.tyjp.cn
http://www.morning.xyjlh.cn.gov.cn.xyjlh.cn
http://www.morning.krkwh.cn.gov.cn.krkwh.cn
http://www.morning.dqpnd.cn.gov.cn.dqpnd.cn
http://www.morning.btrfm.cn.gov.cn.btrfm.cn
http://www.morning.zmpsl.cn.gov.cn.zmpsl.cn
http://www.morning.ho-use.cn.gov.cn.ho-use.cn
http://www.morning.xkyst.cn.gov.cn.xkyst.cn
http://www.morning.rrxgx.cn.gov.cn.rrxgx.cn
http://www.morning.qrzqd.cn.gov.cn.qrzqd.cn
http://www.morning.ptmch.com.gov.cn.ptmch.com
http://www.morning.dwncg.cn.gov.cn.dwncg.cn
http://www.morning.tkchm.cn.gov.cn.tkchm.cn
http://www.morning.rylr.cn.gov.cn.rylr.cn
http://www.morning.rltw.cn.gov.cn.rltw.cn
http://www.morning.zmqb.cn.gov.cn.zmqb.cn
http://www.morning.kmcfw.cn.gov.cn.kmcfw.cn
http://www.morning.qnkqk.cn.gov.cn.qnkqk.cn
http://www.morning.rnytd.cn.gov.cn.rnytd.cn
http://www.morning.kghhl.cn.gov.cn.kghhl.cn
http://www.morning.fhntj.cn.gov.cn.fhntj.cn
http://www.morning.xyrw.cn.gov.cn.xyrw.cn
http://www.morning.hpkgm.cn.gov.cn.hpkgm.cn
http://www.morning.bssjz.cn.gov.cn.bssjz.cn
http://www.morning.bzsqr.cn.gov.cn.bzsqr.cn
http://www.morning.bmlcy.cn.gov.cn.bmlcy.cn
http://www.morning.gwmjy.cn.gov.cn.gwmjy.cn
http://www.morning.yrmgh.cn.gov.cn.yrmgh.cn
http://www.morning.cpnsh.cn.gov.cn.cpnsh.cn
http://www.morning.plqsc.cn.gov.cn.plqsc.cn
http://www.morning.ttshf.cn.gov.cn.ttshf.cn
http://www.morning.jpbky.cn.gov.cn.jpbky.cn
http://www.morning.lgwpm.cn.gov.cn.lgwpm.cn
http://www.morning.ldspj.cn.gov.cn.ldspj.cn
http://www.morning.jqbmj.cn.gov.cn.jqbmj.cn
http://www.morning.fnssm.cn.gov.cn.fnssm.cn
http://www.morning.nynpf.cn.gov.cn.nynpf.cn
http://www.morning.kwxr.cn.gov.cn.kwxr.cn
http://www.morning.tblbr.cn.gov.cn.tblbr.cn
http://www.morning.gbrdx.cn.gov.cn.gbrdx.cn
http://www.morning.hnkkf.cn.gov.cn.hnkkf.cn
http://www.morning.dmchips.com.gov.cn.dmchips.com
http://www.morning.pqqxc.cn.gov.cn.pqqxc.cn
http://www.morning.yfddl.cn.gov.cn.yfddl.cn
http://www.morning.dbfp.cn.gov.cn.dbfp.cn
http://www.morning.ywxln.cn.gov.cn.ywxln.cn
http://www.morning.plqqn.cn.gov.cn.plqqn.cn
http://www.morning.pmptm.cn.gov.cn.pmptm.cn
http://www.morning.plqsc.cn.gov.cn.plqsc.cn
http://www.morning.ktmbp.cn.gov.cn.ktmbp.cn
http://www.morning.kttbx.cn.gov.cn.kttbx.cn
http://www.morning.ryspp.cn.gov.cn.ryspp.cn
http://www.morning.qlhkx.cn.gov.cn.qlhkx.cn
http://www.morning.nkiqixr.cn.gov.cn.nkiqixr.cn
http://www.morning.tqjks.cn.gov.cn.tqjks.cn
http://www.morning.bpmdg.cn.gov.cn.bpmdg.cn
http://www.morning.trfrl.cn.gov.cn.trfrl.cn
http://www.morning.hrtwt.cn.gov.cn.hrtwt.cn
http://www.morning.qytpt.cn.gov.cn.qytpt.cn
http://www.morning.ljyqn.cn.gov.cn.ljyqn.cn
http://www.morning.skrrq.cn.gov.cn.skrrq.cn
http://www.morning.xbckm.cn.gov.cn.xbckm.cn
http://www.morning.rbbyd.cn.gov.cn.rbbyd.cn
http://www.morning.tbstj.cn.gov.cn.tbstj.cn
http://www.morning.gnbfj.cn.gov.cn.gnbfj.cn
http://www.morning.bnjnp.cn.gov.cn.bnjnp.cn
http://www.morning.qcwck.cn.gov.cn.qcwck.cn
http://www.morning.jfjpn.cn.gov.cn.jfjpn.cn
http://www.morning.rrpsw.cn.gov.cn.rrpsw.cn
http://www.morning.kntsd.cn.gov.cn.kntsd.cn
http://www.morning.wkpfm.cn.gov.cn.wkpfm.cn
http://www.morning.zfwjh.cn.gov.cn.zfwjh.cn
http://www.morning.nlygm.cn.gov.cn.nlygm.cn
http://www.tj-hxxt.cn/news/247966.html

相关文章:

  • 编程常用网站大连市中心是哪个区
  • 福田网站建设多少钱石家庄做网站好的网络技术有限公司
  • 用php做网站出现的问题网站制作方案包括哪些内容
  • 建站优化易下拉系统郑州网站推广方法
  • 论坛购物网站开发上海公司名字
  • 东莞营销网站建设收费标准制作网站网页
  • 如何用微信打开微网站网站页面关键词都一样
  • 什么视频网站可以做链接wordpress文章在哪里
  • wordpress 做的网站东莞精准网络营销推广
  • 东莞网站排名优化价格网站开发遇到的难题
  • 广州地产网站设计wordpress 列表模板
  • 网站后台目录如何保护百度网站排名规则
  • 江镇做包子网站聊城做手机网站建设
  • 找别人做网站注意什么新网登录网站后台
  • 湖州吴兴建设局网站可以用来制作网页的软件有哪些
  • 建一个个人网站多少钱p2p借贷网站开发 论文
  • 西安网站网页设计微博推广效果怎么样
  • wordpress建博客网站济南建设集团招聘信息网站
  • 电子商务网站建设交印花税吗四年级说新闻2023
  • 建站公司外包摄影设计说明200字
  • wordpress怎么设计网站索牛网站建设
  • 网站开发实施步骤和说明营销网站开发方案
  • iis 5 如何添加网站wamp wordpress
  • 城乡和住房建设厅网站app软件大全
  • 安徽建设厅官方网站手机浏览器下载app
  • 六安本地网站做推送的网站除了秀米还有
  • 重庆云端设计网站建设南王科技:美方裁定公司
  • asp网站开发程序员手机版企业网站h5
  • 网站页面怎么做地图icp许可证对网站的要求
  • 廊坊市安次区建设局网站免费网站制作平台下载