linux下fork的使用一
来源:互联网 发布:值乎下载 编辑:程序博客网 时间:2024/04/20 22:41
头文件:
#include <unistd.h>函数定义:
int fork( void );返回值:
子进程中返回0,父进程中返回子进程ID,出错返回-1
函数说明:
一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间,它们之间共享的存储空间只有代码段。
#include <unistd.h>#include <stdio.h> int main(int argc, char ** argv ) { int pid = fork(); if(pid == -1) { // print("error!"); } else if(pid == 0) { // print("This is the child process!"); } else { // print("This is the parent process! child process id = %d", pid); } return 0;}
Error Codes
fork()系统在Linux中的返回值是没有NULL的.
出错返回错误信息如下:EAGAIN
达到进程数上限.ENOMEM没有足够空间给一个新进程分配。附:
操作系统对进程的管理,是通过进程表完成的。进程表中的每一个表项,记录的是当前操作系统中一个进程的信息,进程在系统的唯一标识是PID,PID是一个从1到32768的正整数,其中1一般是特殊进程init,其它进程从2开始依次编号,当用完32768后,从2重新开始。
一个称为“程序计数器(program counter, pc)的寄存器,指出当前占用 CPU的进程要执行的下一条指令的位置。
当分给某个进程的 CPU时间已经用完,操作系统将该进程相关的寄存器的值,保存到该进程在进程表中对应的表项里面;把将要接替这个进程占用 CPU的那个进程的上下文,从进程表中读出,并更新相应的寄存器(这个过程称为“上下文交换(process context switch)”,实际的上下文交换需要涉及到更多的数据,那和fork无关,不再多说,主要要记住程序寄存器pc指出程序当前已经执行到哪里,是进程上下文的重要内容,换出 CPU的进程要保存这个寄存器的值,换入CPU的进程,也要根据进程表中保存的本进程执行上下文信息,更新这个寄存器)。
- linux下fork的使用一
- linux下fork的使用
- linux 下 fork 的 使用
- linux 下的fork()函数使用例子
- Linux下fork函数的使用
- Linux 下的 fork()
- Linux 下的 fork
- linux下的fork
- Linux 下的 fork()
- Linux环境下编程(一)——进程fork()的使用
- LINUX fork的使用
- Linux下的fork(),exec()等函数的使用
- linux下fork的运行机制
- linux下的fork()函数
- linux下fork的运行机制
- LINUX下的fork例子
- Linux下的 fork 函数
- Linux下的fork()函数
- 为mysql的用户赋予权限
- android加载include
- 图像处理滤波器(三)——高斯平滑滤波器(Gaussian Smoothing Filter)
- Android实现图片的倒影效果
- RejectedPolicy--DiscardOldestPolicy
- linux下fork的使用一
- HTML简单实例加表单的显示效果
- Spring AOP与权限管理
- struct timeval 和 struct timespec
- WP7 SDK下载 - RTM芒果正式版
- 第11题 求链表倒数第k个节点
- 用两种方式实现简单的隔行变色 用js实现
- 【备忘】c++重载的一些知识
- 修改系统时间 (windows,Linux)