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

网站部分链接做301跳转android软件开发工程师

网站部分链接做301跳转,android软件开发工程师,设计手机网站,房地产销售创建进程 fork fork是一个系统调用函数#xff0c;用来创建子进程#xff0c;通过多个执行流完成任务。子进程和父进程共用一份代码#xff0c;子进程数据使用写时拷贝#xff0c;即子进程数据在创建的时候和父进程相同#xff0c;但是当要修改数据的时候#xff0c;子进…创建进程 fork fork是一个系统调用函数用来创建子进程通过多个执行流完成任务。子进程和父进程共用一份代码子进程数据使用写时拷贝即子进程数据在创建的时候和父进程相同但是当要修改数据的时候子进程数据会再复制一份数据。 函数无参返回值pid_t是用有符号整形封装的。 函数返回值如果创建成功父进程就返回子进程的pid子进程返回0如果创建失败就返回-1 循环创建多个进程 1 #include stdlib.h2 #include stdio.h3 #include unistd.h4 5 void run()6 {7 while(1)8 {9 printf(child pid:%d\n,getpid());10 sleep(1);11 }12 }13 14 int main()15 {16 pid_t id;17 int i;18 for(i 0; i 5; i)19 {20 id fork();21 if(id 0)22 {23 run();24 exit(0);25 }26 }27 sleep(1000);28 return 0;29 } 终止进程 进程终止有三种情况 1.结果正确返回 2.结果错误返回 3.程序异常 进程运行结束返回值可以使用returnexit()_exit()。程序异常一般是外部发给程序一个信号程序异常终止 正常终止 returnexit()_exit()三者的区别是什么 return和exit() 在main函数中return和exit都可以让进程结束在一般函数中return只是让函数返回继续运行而exit会直接终止进程 exit()和_exit() _exit是系统调用接口直接终止程序exit调用了_exit并且会先刷新缓冲区做一些清理工作。 因为printf内容不加\n不会刷新缓冲区不会打印出来 异常终止 写一个死循环让程序一直运行 这里向程序发送Floating Point exception异常信号  程序收到信号后异常终止 进程等待 当子进程还没有退出父进程就要退出时如果父进程不等待子进程直接退出就会让子进程变为僵尸进程造成内存泄漏。因此我们需要用进程等待的方式获取子进程的运行状态以及退出码。 介绍两个系统调用接口 wait和waitpid waitpid的功能包含了wait我们先说waitpid #include sys/wait.h pid_t waitpid(pid_t pid, int *status, int options);pid表示子进程的pid -1表示等待任何子进程和wait一样后面讲 0表示等待子进程为pid的进程 status是一个输出型参数 int有32bit前16位是有效位。前七位是终止信号如果程序异常终止就会将信号保存到这里第八位是core dump标志8-16位是退出码 WIFEXITED(status)可以判断子进程是否正常结束 如果子进程正常结束通过 exit 调用或从主函数返回WIFEXITED 返回非零值真如果子进程是由于其他原因结束如信号则返回零值假 WEXITSTATUS(status)可以用来获取子进程传递给 exit() 的实际退出值 option是用来修改waitpid行为的选项 没传参时默认为阻塞轮询即父进程必须等待子进程结束才继续执行 传 WNOHANG 表示非阻塞轮询父进程获取子进程状态后不论子进程是否结束都会先执行自己的代码。如果子进程结束返回子进程pid如果未结束返回0 返回值 0表示子进程正常结束返回子进程pid 0 表示子进程还未结束 0表示子进程异常结束 阻塞轮询 1 #include stdio.h2 #include unistd.h3 #include sys/types.h4 #include sys/wait.h5 #include stdlib.h6 7 int main()8 {9 for(int i 0; i 5; i)10 {11 pid_t id fork();12 if(id 0)13 {14 printf(child pid:%d\n, getpid());15 sleep(1);16 exit(0);17 }18 }19 20 sleep(5);21 22 int status 0;23 for(int i 0; i 5; i)24 {25 pid_t ret waitpid(-1, status, 0);26 if(ret 0)27 {28 printf(wait success pid:%d\n, ret);29 sleep(1);30 }31 }32 return 0;33 sleep(5);34 }运行结果  运行过程的进程监视  阻塞轮询  1 #include stdio.h2 #include unistd.h3 #include sys/types.h4 #include sys/wait.h5 #include stdlib.h6 #include errno.h7 #include string.h8 9 int main()10 {11 //非阻塞轮询12 13 pid_t id fork();14 if(id 0)15 {16 //child17 printf(child pid:%d, ppid:%d\n, getpid(), getppid());18 //测试异常19 //int* p NULL;20 //*p 1;21 sleep(10);22 exit(1);23 } 24 else if(id 0) 25 { 26 int status;27 //father 28 while(1) 29 { 30 pid_t ret waitpid(id, status,WNOHANG); 31 if(ret id) 32 {33 if(WIFEXITED(status)) 34 { 35 //正常结束36 printf(wait success, exit code:%d\n, WEXITSTATUS(status));37 break; 38 } 39 } 40 else if(ret 0) 41 { 42 //异常 43 printf(wait fail,%s\n,strerror(status 0x7f));44 break; 45 } 46 else 47 { 48 //子进程还在执行49 printf(child running,wait a minute\n);50 sleep(1);51 }52 }53 }正常结束  异常结束
http://www.hkea.cn/news/14484183/

相关文章:

  • 网站解析密码江苏企业网站建设
  • 制作公司网站在公账汇款时用途备注什么做期权注册网站
  • 云浮网站建设公司模板网站官网
  • 红河做网站企业网站的制作与维护
  • wordpress 自建网站长沙必去的10个景点
  • 0基础建站教程如何修改模板网站
  • 学习网站大全seo的内容有哪些
  • 个人网站备案材料填写公司做网站一般多少钱运营
  • 宿迁做网站网站导航怎么做的
  • 网站无法连接mysqlwordpress菜单顺序
  • wordpress模板网站标题重复广告公司属于什么行业
  • 网站建设佰首选金手指二五怀柔区企业网站设计机构提供
  • 用手机域名做网站有多少如何加入广告联盟赚钱
  • 一家专做土特产的网站上市公司网站建设分析评价
  • 做百度竞价网站修改影响排名吗物联网平台是什么意思
  • 无锡新吴区住房建设交通局网站各地民营企业创新前行
  • 网站开发与优化课程总结wordpress模板mip
  • 外星人建设的网站汕头网站seo外包
  • 网站前端交互功能案例分析如何选择扬中网站建设
  • 浙江火电建设有限公司网站河北建设网站
  • wordpress 标签图标2022年搜索引擎优化指南
  • 帮别人做网站的公司是外包吗常德市住房和城市建设局网站
  • 网站开发 手机 电脑wordpress 导航文字图片
  • 上传网站程序是什么群晖 安装wordpress
  • 网站建设方案公司迅速百度网站自然排名
  • dede音乐网站源码沙井网站设计
  • 网站后台怎么这么卡seo全网营销公司
  • 网页设计是网站建设与管理的内容吗哪些网站可以做电脑画画赚钱
  • 各大网站网址目录合肥做网站好的公司哪家好
  • 网站推广的特点网上做ps赚钱的网站