admin管理员组

文章数量:1037775

关于进程的实验(子进程和父进程相关的)

1.第一个问题

编写一段程序,利用系统调用fork( )创建两个进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。

下面的这个是我的程序源代码:pid1和pid2分别表示的就是两个子进程,并且输出对应的这个字符;

img

但是结果表明,这个顺序并不是固定的:我自己一共是运行了两次,第一次是abc的书序输出的,第二次是这个acb的顺序输出的,可见这个操作系统对于这个进程的调度顺序并不是固定的,所以出现了这样的两次执行,但是结果不一样的情况;

img

2.第二个问题

修改已经编好的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。

下面的是源代码:

img

下面的是执行的结果:可以发现也是会出现不同的这个结果的,一次是bac也就是子进程1,父进程,子进程2的顺序,还有一个就是父进程,子进程1,子进程2的顺序;

img
image-20250316171802448

3.第三个问题

如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。

源程序:

img

执行情况:while ((pid1 = fork()) == -1); 使用fork函数创建一个子进程。fork函数调用一次,返回两次:在父进程中返回子进程的 ID(大于 0 的值),在子进程中返回 0,如果创建失败则返回 - 1。这里通过while循环确保fork成功执行。

if (pid2 == 0) 表示进入第二个子进程的代码块。与第一个子进程类似,通过for循环执行 5 次,每次循环锁定标准输出,输出字符串"pid2 here : " 加上当前循环变量i的值,然后解锁标准输出。

img

由于lockf函数的存在,每个子进程内部的输出是有序的,但两个子进程和父进程之间的输出顺序是不确定的,取决于操作系统的进程调度。例如,可能先输出父进程的内容,然后是第一个子进程的内容,最后是第二个子进程的内容;也可能是其他顺序 。但每个子进程自身的 5 次循环输出是连续且有序的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-16,如有侵权请联系 cloudcommunity@tencent 删除进程系统操作系统程序函数

关于进程的实验(子进程和父进程相关的)

1.第一个问题

编写一段程序,利用系统调用fork( )创建两个进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。

下面的这个是我的程序源代码:pid1和pid2分别表示的就是两个子进程,并且输出对应的这个字符;

img

但是结果表明,这个顺序并不是固定的:我自己一共是运行了两次,第一次是abc的书序输出的,第二次是这个acb的顺序输出的,可见这个操作系统对于这个进程的调度顺序并不是固定的,所以出现了这样的两次执行,但是结果不一样的情况;

img

2.第二个问题

修改已经编好的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。

下面的是源代码:

img

下面的是执行的结果:可以发现也是会出现不同的这个结果的,一次是bac也就是子进程1,父进程,子进程2的顺序,还有一个就是父进程,子进程1,子进程2的顺序;

img
image-20250316171802448

3.第三个问题

如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。

源程序:

img

执行情况:while ((pid1 = fork()) == -1); 使用fork函数创建一个子进程。fork函数调用一次,返回两次:在父进程中返回子进程的 ID(大于 0 的值),在子进程中返回 0,如果创建失败则返回 - 1。这里通过while循环确保fork成功执行。

if (pid2 == 0) 表示进入第二个子进程的代码块。与第一个子进程类似,通过for循环执行 5 次,每次循环锁定标准输出,输出字符串"pid2 here : " 加上当前循环变量i的值,然后解锁标准输出。

img

由于lockf函数的存在,每个子进程内部的输出是有序的,但两个子进程和父进程之间的输出顺序是不确定的,取决于操作系统的进程调度。例如,可能先输出父进程的内容,然后是第一个子进程的内容,最后是第二个子进程的内容;也可能是其他顺序 。但每个子进程自身的 5 次循环输出是连续且有序的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-16,如有侵权请联系 cloudcommunity@tencent 删除进程系统操作系统程序函数

本文标签: 关于进程的实验(子进程和父进程相关的)