欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 运维知识 > linux >内容正文

linux

linux父子进程同步实验,linux-凯发k8官方网

发布时间:2024/10/14 linux 24 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 linux父子进程同步实验,linux-父子进程的简单同步 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

int fork()

功能:创建一个子进程

返回值:0-创建成功,-1-创建进程失败,>0-创建进程成功,返回返回子进程id

int wait(int * status)

功能:将调用的进程挂起,等待子进程运行结束

参数:指向整数的指针,0-子进程正常结束,非0-出现运行有误

返回值:调用正常-子进程id,调用进程无子进程-调用失败,返回-1

int exit()

功能:终止进程的执行

返回值:无

sleep(n)

功能:进程随眠1秒

参数:n-随眠时间

实例代码

1.1 父进程创建子进程,分别循环输出"i am parent."和"i am child."5次,每次输出一次后使用sleep(1)延时1s。

#include

#include

/*

1_1.c

父进程创建子进程,分别循环输出

"i am child."和"i am parent."

每输出一次随眠1s。

*/

main()

{

int p;

while((p=fork())==-1);

if(p==0)

{/*子进程块*/

int i;

for(i=0;i<5;i )

{

printf("i am child.\n");

sleep(1);

}

}

else

{/*父进程块*/

int i;

for(i=0;i<5;i )

{

printf("i am parent.\n");

sleep(1);

}

}

}

1.2 在1.1的基础上利用exit()和wait()实现父子进程间的同步。

#include

#include

#include

/*

简单的进程同步:

父进程等待子进程输出后再输出

*/

main()

{

int p;

while((p=fork())==-1);

if(p==0)

{/*子进程块*/

int i;

for(i=0;i<5;i )

{

printf("i am child.\n");

sleep(1);

}

exit(0);

}

else

{/*父进程块*/

int i;

for(i=0;i<5;i )

{

wait(0);

printf("i am parent.\n");

sleep(1);

}

}

}

扩展链接

[apue] 使用文件记录锁无法实现父子进程交互执行同步

父子进程间交互执行是指用一种同步原语,实现父进程和子进程在某一时刻只有一个进程执行,之后由另外一个进程执行,用一段代码举例如下: sync_init(); , counter=; pid_t pid ...

linux父子进程问题

今天遇到一个linux进程启动时指定max open files不对的问题,导致程序建立socket异常,进而导致fullgc问题,影响正常服务.所以顺带又温习了下linux下的父子进程的特性. 孤儿 ...

linux 父子进程实现复制文件内容到另一个文件内

1. 子进程先拷贝前一半 ,父进程一直阻塞到子进程拷贝完再拷贝后一半 /* 子进程先拷贝前一半文件,父进程先阻塞等待子进程拷贝完前一半内容, * 然后父进程在拷贝,后一半内容 * */ #includ ...

linux杀死进程的简单讲解

一. 终止进程的工具kill .killall.pkill.xkill 终止一个进程或终止一个正在运行的程序,一般是通过kill .killall.pkill.xkill 等进行.比如一个程序已经死掉 ...

[置顶] 简单解析linux下进程通信方法

linux下的进程通信手段基本上是从unix平台上的进程通信手段继承而来的.而对unix发展做出重大贡献的两大主力at&t的贝尔实验室及bsd(加州大学伯克利分校的伯克利软件发布中心)在进程间 ...

【linux 进程】fork父子进程间共享数据分析

之前我们通过fork()函数,得知了父子进程之间的存在着代码的拷贝,且父子进程都相互独立执行,那么父子进程是否共享同一段数据,即是否存在着数据共享.接下来我们就来分析分析父子进程是否存在着数据共享. ...

【linux 进程】之关于父子进程之间的数据共享分析

之前我们通过fork()函数,得知了父子进程之间的存在着代码的拷贝,且父子进程都相互独立执行,那么父子进程是否共享同一段数据,即是否存在着数据共享.接下来我们就来分析分析父子进程是否存在着数据共享. ...

linux进程通信之使用匿名管道进行父子进程通信

管道:是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件,又称pipe文件. 管道是单向的.先进先出的.无结构的.固定大小的字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起 ...

linux编程学习笔记(十四) 创建进程与 父子进程内存空间

1什么是进程:进程是一个执行中的程序 执行的程序: 代码->资源->cpu 进程有很多数据维护:进程状态/进程属性 所有进程属性采用的一个树形结构体维护 ps  -a//所有进程 ps - ...

随机推荐

myisam和innodb的区别

个人见解: 1.最主要的差别就是innodb 支持事务处理与外键和行级锁.而myisam不支持 所以有用到事务处理和外键的,要用innodb 2. innodb 中不保存表的具体行数,也就是说,执行s ...

while do while 区别

一.while语句的一般形式为:while(表达式)语句其中表达式是循环条件,语句为循环体.while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句. int i=10; whil ...

git add 常见用法

git add   git add [参数]  [--] //作用就是将我们需要提交的代码从工作区添加到暂存区,就是告诉git系统,我们要提交哪些文件,之后就可以使用gi ...

awk by example--转载

总结

以上是凯发k8官方网为你收集整理的linux父子进程同步实验,linux-父子进程的简单同步的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图