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

郏县住房和城乡建设局网站开福区网站建设中

郏县住房和城乡建设局网站,开福区网站建设中,海安县住房和城乡建设局网站,网络科技是做什么的目录 一、写时拷贝 1.创建子进程 2.写时拷贝 二、进程终止 1.函数返回值 2.错误码 3.异常退出 4.exit 5._exit 一、写时拷贝 父子进程#xff0c;代码共享#xff0c;不作写入操作时#xff0c;数据也是共享的#xff0c;当任意一方试图写入#xff0c;便通过写时拷…目录 一、写时拷贝 1.创建子进程 2.写时拷贝 二、进程终止 1.函数返回值 2.错误码 3.异常退出 4.exit 5._exit 一、写时拷贝 父子进程代码共享不作写入操作时数据也是共享的当任意一方试图写入便通过写时拷贝的方式各自有一份副本。 1.创建子进程 这是父进程的大致蓝图。 创建子进程分配内存块和内核数据结构给子进程。 将父进程的部分数据结构内容拷贝到子进程即代码内容共享数据内容暂时共享。 2.写时拷贝 写实拷贝的大致蓝图 为什么要作写时拷贝 子进程不一定会用到父进程的全部数据故作写时拷贝用来完成特定的数据需求。 页表 页表并不是只有虚拟地址和物理地址两列还有其他属性列如“权限”、“是否存在于内存”。权限列有只读、可读可写等属性。 写时拷贝的具体过程 子进程复制父进程的部分内容后操作系统在各自的页表中将数据段的属性设置为只读。 当发生写时拷贝时由于页表项的属性是只读故造成缺页中断中断处理过程时操作系统将页表项属性再设置为可读可写。 二、进程终止 1.函数返回值 main函数的返回值是当前进程的退出码而普通函数的返回值仅仅是函数调用的结果。 main函数返回值为0即退出码为0表示当前程序运行成功非零则表示失败而失败的原因由错误码表示。 2.错误码 函数strerror用来打印错误码详情Linux下错误码如下所示。 int main() {for(int i 0;i 200 ;i){printf(%d : %s\n,i, strerror(i));}return 0; }0 : Success 1 : Operation not permitted 2 : No such file or directory 3 : No such process 4 : Interrupted system call 5 : Input/output error 6 : No such device or address 7 : Argument list too long 8 : Exec format error 9 : Bad file descriptor 10 : No child processes 11 : Resource temporarily unavailable 12 : Cannot allocate memory 13 : Permission denied ······ 错误码转换为错误描述一般有两种情形使用系统提供的或者自定义。 自定义错误码 enum {success0,open_err,malloc_err }; const char* errornumToDisc(int code) {switch(code){case success:return Success!;case open_err:return Open fail;case malloc_err:return malloc error;default:return unkonw errornum;} } int main() {int code open_err;printf(%d-%s\n,code,errornumToDisc(code));return code; }系统提供的错误码errno 当前程序退出后默认errno保存着错误码。 如果程序正常退出errno的值为0。 int main() {printf(%d-%s\n,errno,strerror(errno)); }可以通过echo $?查看最近一次运行的退出码。  [eutoVM-4-13-centos 241002]$ ./myprocess 0-Success [eutoVM-4-13-centos 241002]$ echo $? 0如果遇到错误退出则可以通过errno打印错误信息。 int main() {FILE* pf fopen(a.txt,r);printf(%d-%s\n,errno,strerror(errno));return 0; }[eutoVM-4-13-centos 241002]$ ./myprocess 2-No such file or directory3.异常退出 程序正常退出有三种方式。 main函数的返回值库函数exit系统调用接口_exit 进程退出的场景只有三种 1.正常退出程序运行结束运行成功main函数返回0。 2.正常退出程序运行结束运行失败main函数返回非零值。 3.异常退出代码并没有被全部执行一般异常退出是由于进程收到了异常信号信号编码对应着发生异常的原因。 执行kill -l这些都是可以让进程异常退出的信号。 [eutoVM-4-13-centos 241002]$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN1 36) SIGRTMIN2 37) SIGRTMIN3 38) SIGRTMIN4 39) SIGRTMIN5 40) SIGRTMIN6 41) SIGRTMIN7 42) SIGRTMIN8 43) SIGRTMIN9 44) SIGRTMIN10 45) SIGRTMIN11 46) SIGRTMIN12 47) SIGRTMIN13 48) SIGRTMIN14 49) SIGRTMIN15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX 4.exit EXIT(3) Linux Programmers Manual EXIT(3)NAMEexit - cause normal process terminationSYNOPSIS#include stdlib.hvoid exit(int status);exit函数是由C语言库提供用来直接退出当前进程参数的值即为退出码如果运行成功则执行exit(0)退出。 5._exit _EXIT(2) Linux Programmers Manual _EXIT(2)NAME_exit, _Exit - terminate the calling processSYNOPSIS#include unistd.hvoid _exit(int status);#include stdlib.hvoid _Exit(int status);_exit是Linux系统调用接口由Linux操作系统提供总体上的用法和exit没有区别。差异在于exit函数在退出进程的时候会刷新缓冲区而_exit函数则不会刷新缓冲区不会刷新缓冲区也说明这个缓冲区不在操作系统内部。         分别执行下面两段代码观察有何不同。 int main() {printf(hello);exit(0); }int main() {printf(hello);_exit(0); }总结推荐使用exit原因不是因为它会刷新缓冲区而是因为它是由C语言库提供内部其实封装了_exit进程的结束肯定是由操作系统调用系统调用接口来结束exit只是封装Linux系统调用接口_eixt罢了同时也封装了Windows平台的系统调用接口这样一来使用exit的程序具备可移植性在Linux平台调用Linux平台的系统调用接口_exit在Windows平台调用Windows平台的系统调用接口。
http://www.hkea.cn/news/14392056/

相关文章:

  • 公司想建个网站广告设计与制作专业属于什么大类
  • 米枫网站怎么做分页安卓手机软件开发平台
  • 中国有名的模版网站网站后台系统的易用性
  • 工程建设业主官方网站wordpress 点评插件
  • 锦州网站建设报价建设工程执业注册中心网站
  • 环保网站建设价格现在做一个什么的网站比较好
  • 官方网站下载派的app可以做思维导图的网站
  • wordpress的目录结构(一)西安seo排名公司
  • 广州网站建设 骏域wordpress 萌化主题
  • 河南网站建设路国外设计师wordpress主题
  • 禹州市门户网站建设邢台网络推广
  • 网站建设价格优惠广州网站优化网站建设
  • 网站建设实习生怎么样黄冈网站seo
  • 网站相对路径和绝对路径应用界面设计
  • 太原搭建网站的公司深圳网络营销推广中心
  • 尚品本色木门网站是哪个公司做的wordpress查询标签
  • 做网站的会计分录山东建设兵团网站
  • 谷城县城乡建设局网站博客网站主页代码html
  • wordpress手机apo贵阳seo网站推广
  • 莆田seo建站微信小程序开发基础
  • 北大青鸟网站开发wordpress数据库调用文章
  • 合肥专业做网站的为什么无法再社保网站上做减员
  • 网站怎么优化关键词快速提升排名上海早晨新闻今天
  • 网站流程图设计qq网页版登录官网登录网站
  • 助农网站策划书村级网站建设 不断增强
  • 网站怎么装模版搜索引擎优化与推广技术
  • 怎样把网站做成app高端网站源码
  • 小说网站架构推广普通话手抄报内容大全
  • 公司做网站做什么类型的网站好使用jquery的网站
  • 做新闻微网站有哪些方面wordpress默认ssl