栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

进程--fork

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

进程--fork

fork

进程是通过逻辑语句来判断 第i个进程做什么事情

程序

二进制文件,占用的磁盘空间

进程,启动的应用程序

所有的数据都在内存中
需要占用更多的系统资源

代码

创建子进程

int fork (void) 

父子进程的进程id不一样,

对于fork函数的返回值,可以据此区别父子进程

父进程返回子进程的id,说明子进程创建成功
子进程返回0

子进程创建成功后,代码的执行位置

注:父进程执行到哪,子进程就从哪开始执行
如下程序,
当i=0时,创建第一个子进程,此时第一个子进程从i=0开始执行
当i=1时,创建第二个子进程,此时第二个子进程从i=1开始执行

#include 
#include 
#include 
#include 
#include 

int main(int argc, const char * argv[])
{
	int num = 2;
	int i;
	for (i=0; i 
父子进程执行顺序 

不一定,谁先抢到,谁先执行
shell不知道创建了子进程
父进程执行完后,shell切换到前台,所以,只有子进程执行完后父进程才结束。
不能根据打印顺序确定执行顺序
可以用如下代码进行验证

#include 
#include 
#include 
#include 
#include 

int main(int argc, const char * argv)
{
	pid_t pid;

	printf ("上n");
	for (int i=0; i<4; i++)
		printf ("%d ", i);
	printf ("n");

	pid = fork(); //头文件为unistd.h
	if (pid>0)
	{
		printf ("p pid = %d", getpid());
	}
	else if (pid == 0)
	{
		printf ("C : pid = %d , ppid = %d", getpid(), getppid());
	}

	printf ("下n");
	for (int i=0; i<4; i++)
		printf ("%d ", i);
	printf ("n");
	return 0;
}
getpid

得到当前进程的进程id

getppid

得到当前进程的父进程id

通过实例加深对进程的理解
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/320940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号