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

怎么做网站怎么引入广告挣钱四川响应式网站哪家好

怎么做网站怎么引入广告挣钱,四川响应式网站哪家好,网站前端建设需要学会什么,网站开发 职业环境分析引入#xff1a; 为什么#xff1f;是什么#xff1f;怎么办 是什么#xff1f; 进程等待是指父进程暂停自己的执行#xff0c;直到某个特定的子进程结束或发生某些特定的事件。 为什么#xff1f; 僵尸进程刀枪不入#xff0c;不可被杀死#xff0c;存在内存泄露…引入 为什么是什么怎么办 是什么 进程等待是指父进程暂停自己的执行直到某个特定的子进程结束或发生某些特定的事件。 为什么 僵尸进程刀枪不入不可被杀死存在内存泄露获取进程的执行情况知道我布置给子进程的任务它完成的怎么样了–可选 怎么办 wait 函数 #include sys/types.h #include sys/wait.hpid_t wait(int* status);测试 #include stdio.h #include unistd.h #include stdlib.h #include string.h #include sys/types.h #include sys/wait.hint main (void) {pid_t id fork();if (id 0) {// childwhile (1) {printf(我是子进程我正在运行... Pid: %d\n, getpid());sleep(1);}}else {printf(我是父进程: pid: %d我将耐心地等待子进程\n, getpid());sleep(20); // 为了便于观察我们让父进程休眠20s// 苏醒后父进程执行 wait耐心地等待子进程pid_t ret wait(NULL); // 暂且将status参数设置为NULLif (ret 0) {printf(等待失败\n);}else {printf(等待成功\n); // 此时 Z → X}sleep(20); // 子进程退出后再让父进程存在一段时间} }为什么是交替型不是一个执行完//了解循环的细节 在 fork 创建子进程后父进程会首先执行并打印这条信息其中 父进程的pid 是父进程的进程ID。截不下就没截了 父进程打印一次消息后休眠20秒: 父进程仅在创建子进程后打印一次消息然后休眠20秒等待观察子进程的活动不再进行其他操作。 通过这种方式父进程和子进程能够并发地执行各自的任务并且我们通过延迟父进程的退出能观察到子进程的连续活动。 整个程序执行流程如下 父进程打印 yamlCopy code 我是父进程: pid: 1234我将耐心地等待子进程子进程每秒打印一次 yamlCopy code 我是子进程我正在运行... Pid: 5678此循环持续到子进程被终止 通过终端输入 kill 5678 终止子进程。 父进程20秒后苏醒并等待子进程结束后打印 textCopy code 等待成功之后父进程再休眠20秒并继续存在一段时间后退出 waitpid 刚才讲的 wait 并不是主角因为其功能比较简单在进程等待时用的更多的是 waitpid waitpid 可以把 wait 完全包含wait 是 waitpid 的一个子功能。 参数 pid要等待的子进程的进程ID。根据传入的值可以指定等待任何子进程、特定进程ID的子进程、任何同一进程组的子进程或者任何同一会话的子进程。 如果 pid 大于零waitpid 将等待指定进程ID的子进程结束。如果 pid 等于 -1waitpid 将等待任意子进程结束等同于 wait 函数。 status一个指向整型的指针是一个输出型参数它将用于存储子进程的终止状态。 options用于指定等待行为的附加选项。 传入0表示以默认行为等待子进程。阻塞等待中再讲 返回值 如果 waitpid 成功返回值是已终止子进程的进程ID。如果出现错误返回-1并且会设置 errno 变量来指示具体错误原因。 Z状态其本质上就是将自己的 task_struct 维护起来代码可以释放但是 task_struct 必须维护。所谓的 wait/waitpid 的退出信息实际上就是从子进程的 task_struct 中拿出来的即 从子进程的 task_struct 中拿出子进程退出的退出码拷贝到父进程中 status 该参数是一个 输出型参数 即通过调用该函数从函数内部拿出来特定的数据。整数的低 16 位其中又可以分为 最低八位 和 次低八位具体细节看图 1.次低八位拿子进程退出码 #include stdio.h #include unistd.h #include stdlib.h #include string.h #include sys/types.h #include sys/wait.hint main (void) {pid_t id fork();if (id 0) {int cnt 5; // 循环5次// childwhile (1) {// 五秒之内运行状态printf(我是子进程我正在运行... Pid: %d\n, getpid());sleep(1);// 五秒之后子进程终止cnt--;if (cnt 0) {break; }}exit(233); // 方便辨识退出码我们设置为233这是我们的预期结果}else {printf(我是父进程: pid: %d我将耐心地等待子进程\n, getpid());// ***** 使用waitpid进行进程等待int status 0; // 接收 waitpid 的 status 参数pid_t ret waitpid(id, status, 0);if (ret 0) { // 等待成功printf (等待成功ret: %d, 我所等待的子进程退出码: %d\n, ret,(status8)0xFF);}} }status 并不是整体使用的而是区域性使用的我们要取其次低八位。我们可以用 位操作 来完成将 status右移八位再按位与上 0XFF即 (status8)0xFF 就可以提取到 status 的次低八位了。 waitpid 经过系统调用来读取子进程的pcbeg. task_st…)这是为什么呢 操作系统不相信任何人父进程用户无法直接读取子进程的 pcb 要通过系统调用的接口 2.初识 core dump核心转储 它是操作系统在进程收到某些信号而终止运行时将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。目前只需要知道该信息是用于调试的。 3.最低七位提取子进程的退出信号 刚才我们讲的 wait/waitpid 和次低八位的时侯都是关于进程(exit) 的 正常退出。 如果进程 异常退出 呢我们来模拟一下进程的异常退出。 模拟异常退出的情况让子进程一直跑父进程一直等。 #include stdio.h #include unistd.h #include stdlib.h #include string.h #include sys/types.h #include sys/wait.hint main (void) {pid_t id fork();if (id 0) {// 子进程一直不退出父进程会一直等待。// childwhile (1) {printf(我是子进程我正在运行... Pid: %d\n, getpid());sleep(1);}exit(13);}else {printf(我是父进程: pid: %d我将耐心地等待子进程\n, getpid());int status 0;pid_t ret waitpid(id, status, 0);if (ret 0) { // 等待成功printf(等待成功ret: %d, 我所等待的子进程退出码: %d\n, 退出信号是: %d, ret, (status8)0xFF, status0x7F);}} }现在我们直接 while(1) 死循环让子进程往死里跑此时父进程由于调用了 waitpid就会一直等待子进程父进程就会持续阻塞。 父进程看到子进程kill了终于可以不用等了可以给子进程收尸了 可以发现使用-9号信号kill掉进程时,进程的退出信号就是9然而当进程由于信号异常终止时,此时进程退出码是无意义的 所以进程的等待可以理解为是 父进程在等给子进程退出记录 非阻塞轮询 options -阻塞方式 waitpid(pid,status,WNOHANG); WNOHANG就是wait no hanghang也就是悬挂,也就是非阻塞等待子进程死亡,若父进程执行到waitpid时,子进程还没退出,则函数返回0后接着运行下面的代码,若执行到waitpid后子进程已经退出则返回退出子进程的pid 假如要期末考试了我想找小张去自习室帮我复习小张自己也在复习我打电话问他什么时候复习完了可以出门情况解释如下 WNOHANG 夯住非阻塞循环 我给小张间隔打电话寻求帮忙自己干等在楼下 阻塞式调用 打电话一直不挂 非阻塞轮询自己的事情最高效 间隔打电话自己也在复习 返回值 pid_t ret_pid0–所等待的条件还没有就绪0成功返回退出码0失败 代码验证 #include stdio.h #include unistd.h #include stdlib.h #include string.h #include sys/types.h #include sys/wait.h int main() {pid_t id fork();if(id0){perror(fork);exit(1);}if(id0)//子进程代码{int count 5;while(count){printf([%d]我是子进程,我的pid是: %d\n,count,getpid());sleep(1);count--;}exit(55);//子进程执行完代码后退出}//父进程代码while(1)//循环访问子进程退出情况{int wait waitpid(id,NULL,WNOHANG);if(wait0)//子进程退出成功{printf(子进程退出成功,子进程pid: %d\n,wait);break;}else if(wait0)//子进程还没退出,父进程干自己的事情{//此处简单模拟父进程干的事情printf(我是父进程,我现在要干一些别的事情\n);}else //等待子进程退出失败{perror(waitpid);exit(1);}sleep(1);}return 0; } ⚠️注:这里父进程可以执行任一任务,我使用printf打印,只是为了明显的看到父进程是没有阻塞等待的! 进程退出的宏 为了增加可读性定义了接口宏来查找退出码 WEXITSTATUS 和WIFEXITED在这之前我们再思考一个问题 ❓ **思考**一个进程退出时可以拿到退出码和推出信号我们先看谁 一旦程序发现异常我们只关心退出信号退出码没有任何意义。 所以我们先关注退出信号如果有异常了我们再去关注退出码。 WEXITSTATUS 宏用于查看进程的退出码若非 0提取子进程退出码。 WEXITSTATUS(status)WIFEXITED 宏用于查看进程是否正常退出如果是正常终止的子进程返回状态则为真。 WIFEXITED(status)waitpid意义 返回记录子进程内核的数据结构 Z-X
http://www.hkea.cn/news/14419747/

相关文章:

  • 先做网站还是先解析深圳福田园岭网站建设
  • 郑州网站推广流程东山网站建设
  • 没备案的网站怎么做淘客asp.net网站开发期末复习题
  • 网站网站 后缀gr企业设计网站公司哪家好
  • php手机网站开发工具做英语在线翻译兼职网站
  • 郑州作网站c 做网站好嘛
  • 保定免费做网站wordpress 作品主题
  • 京东网站的建设与发展展芒设计网页
  • pc网站和手机网站抖音广告怎么投放
  • 深圳建站公司需要多久嘉兴专业做网站
  • 购物网站建设合同做跨境的网站有哪些
  • 信誉好的专业网站建设电子商务app
  • 专业的网站建设制作服务微信怎么开自己的公众号
  • 网站开发工具选用原则网站系统 深圳博域通讯
  • 做外国购物网站需要交税吗网站做哪块简单
  • p2p网站开发思路方案网站建设推广济南兴田德润优惠吗
  • 公司网站一年费用o2o网站建设平台
  • 西安市城乡与住房建设厅网站提供有经验的网站建设
  • 沈阳求做商城 网站百度关键词权重查询
  • 商务网站建设综合实训免费开网站系统
  • 沈阳网站建设渠道wordpress 点击特效
  • 国外的建筑设计网站网站建设的总体设计思想
  • 广州花都网站建设centos wordpress 空白
  • 广州站西手表网站建设怎么分析市场分析
  • 青岛网站制作定制建设网站建设网站
  • 郑州市建设网站建设内容管理网站的目的
  • 招聘网58同城求职信息seo综合查询中的具体内容有哪些
  • 网站建设以及维护跨境电商的现状及前景
  • 网站短期培训能学什么wordpress doc导入
  • 忽略的网站做公众号一个月挣多少钱