• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > Linux 编程之进程fork()详解及实例

Linux 编程之进程fork()详解及实例

作者:lqh 字体:[增加 减小] 来源:互联网

lqh 通过本文主要向大家介绍了linux fork,linux fork函数,linux中fork函数,linux中fork,linux下fork函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Linux fork()详解:

在开始之前,我们先来了解一些基本的概念:

1. 程序, 没有在运行的可执行文件  

   进程,  运行中的程序   

2. 进程调度的方法:  

    按时间片轮转  
    先来先服务 
    短时间优先 
    按优先级别   

3. 进程的状态:       

        就绪   ->>   运行  ->> 等待 
        运行 ->> 就绪 //时间片完了 
        等待 ->> 就绪 //等待的条件完成了   

查看当前系统进程的状态 ps auxf 

status: 

D    Uninterruptible sleep (usually IO) 
R    Running or runnable (on run queue) 
S    Interruptible sleep (waiting for an event to complete) 
T    Stopped, either by a job control signal or because it is being traced. 
W    paging (not valid since the 2.6.xx kernel) 
X    dead (should never be seen) 
Z    Defunct ("zombie") process, terminated but not reaped by its parent. 
<    high-priority (not nice to other users) 
N    low-priority (nice to other users) 
L    has pages locked into memory (for real-time and custom IO) 
s    is a session leader 
l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) 
+    is in the foreground process group   

4. 父进程/子进程 , 让一个程序运行起来的进程就叫父进程, 被调用的进程叫子进程   

5. getpid //获取当前进程的进程号 
   getppid //获取当前进程的父进程号   

6. fork //创建一个子进程,创建出来的子进程是父进程的一个副本, 除了进程号,父进程号不同。  

    子进程从fork()后开始运行, 它得到的fork返回值为0 
    父进程得到的返回值为子进程的进程号 
    返回值为-1时, 创建失败

来看一个程序:

#include <stdio.h> 
#include <unistd.h> 
 
int main(void) 
{ 
  pid_t pid ;  
  //printf("hello world \n"); 
 
  //从fork开始就已经产生子进程 
  pid = fork();  //就已经产生新的4G空间,复制空间 
  //创建出来的子进程是父进程的一个副本,除了进程号,父进程号和子进程号不同 
  //printf("hello kitty\n"); 
  if(pid == 0)   
  { 
    //子进程运行区 
 
    printf("child curpid:%d parentpid:%d \n" , getpid() , getppid()); 
    return 0 ;  
  } 
 
  //父进程运行区 
  printf("parent curpid:%d parentpid:%d \n" , getpid() , getppid()); 
 
  return 0 ;  
} 

</div>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>

您可能想查找下面的文章:

  • Linux 编程之进程fork()详解及实例

相关文章

  • Linux监控cpu以及内存使用情况之top命令(详解)
  • 更改linux用户登录shell的操作方法
  • Linux shell脚本编程if语句的使用方法(条件判断)
  • Python创建、删除桌面、启动组快捷方式的例子分享
  • 建立基于虚拟用户的VSftpd服务
  • Shell正则表达式学习笔记
  • shell编程之实现windows回收站功能分享
  • linux生成(加载)动态库静态库和加载示例方法
  • shell生成简单格式的xml实例
  • shell 编程中空格的使用方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 通过短信发送LOG归类号码发送情况的shell脚本
    • linux shell中 if else以及大于、小于、等于逻辑表达式介绍
    • Shell编程中的特殊变量之进程状态变量介绍
    • Shell脚本之无限循环的两种方法
    • Shell中获取脚本所在目录绝对路径的方法
    • linux文件搜索及其它基础命令介绍(3)
    • shell实现四则运算简单方法
    • Shell脚本test命令使用总结和实例
    • Linux shell脚本基础学习详细介绍(完整版)第1/2页
    • Linux shell脚本全面学习入门

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有