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

站长工具是什么西安百度搜索排名

站长工具是什么,西安百度搜索排名,网站开发外包协议,wampserver安装wordpress1.进程创建 1.1fork函数初识 在linux中fork函数是⾮常重要的函数&#xff0c;它从已存在进程中创建⼀个新进程。新进程为⼦进程&#xff0c;⽽原进 程为⽗进程。 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;⾃进程中返回0&#xff0c;⽗进程返回⼦进程id…

1.进程创建

1.1fork函数初识

在linux中fork函数是⾮常重要的函数,它从已存在进程中创建⼀个新进程。新进程为⼦进程,⽽原进 程为⽗进程。

#include <unistd.h>
pid_t fork(void);
返回值:⾃进程中返回0,⽗进程返回⼦进程id,出错返回-1
进程调⽤fork,当控制转移到内核中的fork代码后,内核做:
分配新的内存块和内核数据结构给⼦进程
将⽗进程部分数据结构内容拷⻉⾄⼦进程
添加⼦进程到系统进程列表当中
fork返回,开始调度器调度
当⼀个进程调⽤fork之后,就有两个⼆进制代码相同的进程。⽽且它们都运⾏到相同的地⽅。但每个进 程都将可以开始它们⾃⼰的旅程,看如下程序
int main( void )
{
pid_t pid;
printf("Before: pid is %d\n", getpid());
if ( (pid=fork()) == -1 )perror("fork()"),exit(1);
printf("After:pid is %d, fork return %d\n", getpid(), pid);
sleep(1);
return 0;
}
运⾏结果:
[root@localhost linux]# ./a.out
Before: pid is 43676
After:pid is 43676, fork return 43677
After:pid is 43677, fork return 0
这⾥看到了三⾏输出,⼀⾏before,两⾏after。进程43676先打印before消息,然后它有打印after。 另⼀个after消息有43677打印的。注意到进程43677没有打印before,为什么呢?如下图所⽰
所以,fork之前⽗进程独⽴执⾏,fork之后,⽗⼦两个执⾏流分别执⾏。注意,fork之后,谁先执⾏完 全由调度器决定。

1.2 fork的返回值

fork() 是 Unix/Linux 系统创建新进程的系统调用,其特殊之处在于 "一次调用,两次返回"

  • 在父进程中返回 子进程的 PID(>0)

  • 在子进程中返回 0

  • 出错时返回 -1

1.3写时拷贝

通常,⽗⼦代码共享,⽗⼦再不写⼊时,数据也是共享的,当任意⼀⽅试图写⼊,便以写时拷⻉的⽅ 式各⾃⼀份副本。具体⻅下图
核心概念:
写时拷贝是一种  延迟内存复制 的优化策略,父子进程  共享同一份物理内存,直到某个进程尝试  修改内存页 时,操作系统才会进行实际复制
关于触发写实拷贝的条件是:
  1. CPU 触发 页错误(Page Fault)

  2. 内核检查错误原因是否为 COW

  3. 分配新的物理页,复制原页内容

  4. 修改故障进程的页表,指向新物理页

  5. 恢复进程执行

1。4 fork调⽤失败的原因
系统中有太多的进程
实际⽤⼾的进程数超过了限制

2.终止进程

进程终⽌的本质是释放系统资源,就是释放进程申请的相关内核数据结构和对应的数据和代码
2-1 进程退出场景
代码运⾏完毕,结果正确
代码运⾏完毕,结果不正确
代码异常终⽌
2-2 进程常⻅退出⽅法
正常终⽌(可以通过 echo $? 查看进程退出码):
1. 从main返回
2. 调⽤exit
3. _exit
2-2-1 退出码
退出码(退出状态)可以告诉我们最后⼀次执⾏的命令的状态。在命令结束以后,我们可以知道命令
是成功完成的还是以错误结束的。其基本思想是,程序返回退出代码 0 时表⽰执⾏成功,没有问题。
代码 1 0 以外的任何代码都被视为不成功。
Linux Shell 中的主要退出码
2.3 exit函数

1. 标准库函数 vs 系统调用

函数原型所属标准关键差异
void exit(int status)C标准库执行完整清理:刷新缓冲区、调用atexit注册函数
void _exit(int status)POSIX系统调用直接终止进程,不执行I/O缓冲清理

资源回收关键机制

资源类型处理方式例外情况
文件描述符全部关闭
内存泄漏用户态内存不会自动释放需依赖OS内核回收
临时文件未删除的临时文件保留需手动unlink
共享内存引用计数减1计数为0时才释放

注意事项:

1. 多线程环境

  • 调用exit()会终止 整个进程(所有线程)

  • 替代方案:

    • pthread_exit() 终止当前线程

    • 主线程使用return退出

2. 信号处理冲突

  • 在信号处理函数中调用exit()是安全的

  • 避免在SIGKILL/SIGSTOP处理中操作(信号不可捕获)

2-3-1 return退出
return是⼀种更常⻅的退出进程⽅法。执⾏return n等同于执⾏exit(n),因为调⽤main的运⾏时函数会 将main的返回值当做 exit的参数。

http://www.dtcms.com/wzjs/260911.html

相关文章:

  • 哪里有做网站的单位营销和销售的区别在哪里
  • 给客户做网站建设方案线上推广渠道有哪些方式
  • 企业网站建设意义免费推广app软件下载
  • 四川城乡建设网站app制作一个需要多少钱
  • 中介做哪些网站上海网站建设哪家好
  • WordPress用lamp还是lnmp杭州网站优化效果
  • 最好的网站设计重庆企业站seo
  • 做批发在哪个网站好如何通过网络营销自己
  • 做网站如何找客户游戏特效培训机构排名
  • 茂名网站建设方案书互联网营销师培训课程免费
  • 全景精灵网站建设软文代发布
  • h5彩票网站怎么做火星时代教育培训机构官网
  • 用jquery做网站好吗电商培训视频教程
  • 效益成本原则网站建设整站优化cms
  • 网站多少个关键词云搜索引擎
  • 校园网站建设案例百度定位店铺位置怎么设置
  • 房屋中介网站建设方案什么是seo
  • 凉山州城乡规划建设局网站业务推广方式有哪些
  • 国内做设计的网站建设博客是哪个软件
  • 医院网站建设方案青岛卓信游戏推广员每天做什么
  • 凯里做网站的公司爱站长工具综合查询
  • 外贸网站改版公司哪家好百度高级搜索网址
  • 威海市建设局网站江苏做网站的公司有哪些
  • 怎么做服务器网站吗产品市场推广计划书
  • 2020年购物app排行湖南网站seo地址
  • 酷奇趣wordpress邀请码上海优化排名网站
  • 外贸网站域名能用cn做后缀吗百度热榜
  • 建设网站的网站底压电工证全球搜索引擎大全
  • 网站管理方案seo外链发布平台
  • 推荐一个可以看片儿的浏览器网站搜索优化技巧