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

如何创造一个自己的网站虚拟主机怎么设计网站吗

如何创造一个自己的网站,虚拟主机怎么设计网站吗,个人网页是什么,婚礼设计素材网站创建进程 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.w-s-a.com/news/387683/

相关文章:

  • 把网站做成app的软件下载国外做兼职的网站有哪些
  • 网站建设 海豚弯专业的网站开发服务商
  • 那个网站有免费模板中国家装公司十大排名
  • 中铁建设集团有限公司门户网站余杭区建设规划局网站
  • 天猫网站建设的目标是什么做网站常见问题模板
  • 做php网站需要什么软件天津建设网官方网站
  • 南漳网站开发上海网站推广方法
  • 深圳seo网站大连旅顺房价
  • dede网站 地图什么做有没有做黑市网站
  • 做网站参考文献域名如何做网站
  • 怎么选择网站开发英文网站建设用途
  • 怎样做电子商务网站织梦生成手机网站
  • 公司网站建设选什么服务器网站里怎样添加关键词
  • 深圳建设局网站深业中城绿化项目营销型网站开发流程包括
  • 找销售的网站九江市建设项目服务中心
  • 东原ARC网站建设公司合肥seo网站推广外包
  • 那个网站是做房产中介的网站制作软件小学
  • 做网页怎么建站点视频解析网站
  • 做网站的系统设计网站设计论文前言
  • 做外贸网站多久更新汕头市建设局网站首页
  • 如何建设专业化的网站手机管理网站模板
  • 花生壳做网站如何用腾讯云做网站
  • 搭建集团网站开发app需要哪些软件
  • 网站建设 中企动力福州阀门wordpress 多说评论
  • php网站集成支付宝接口下载免费网络软件
  • 卡盟网站是怎么建设的用花生壳做网站速度可以吗
  • 杭州物联网前十名公司优秀seo平台
  • 网新中英企业网站管理系统wordpress 登录 缓存
  • wordpress模板建站教程wordpress添加广告位手机自适应
  • h5游戏平台入口优化是什么梗