小编coo*_*ool的帖子

fork(),pipe()和exec()进程创建和通信

我必须编写使用创建进程的程序pipe().

我的第一个任务是编写一个父进程,使用该fork()函数生成四个子进程.

一旦fork()成功,将子进程替换为另一个进程rover1, rover2, rover3, and rover4,尽管它们都具有相同的代码.

这些过程的功能如下.

  1. 每个子进程最初都有自己的编号.它从父级接收新号码.使用以下公式,它创建自己的新数字,如下所示,并将其转发给父级:

    mynumber = (3 * mynumber + 4 * numberreceived)/7

  2. 此过程将继续,直到父级发送系统稳定的消息.父母也有其初始号码.它接收所有孩子的数量并计算其新数字,如下所示:

    mynumber = (3 * mynumber + numbers sent by all the children)/7

  3. 家长会将此号码发送给其所有孩子.此过程将继续,直到父级发现其号码不再更改为止.那时它会告诉孩子们系统已经稳定了.

这就是我所做的,但我的教授说我必须使用exec()来执行子进程并用另一个子进程替换子进程.我不知道如何使用exec().你能帮帮我吗?

我只附加了第一代儿童.

// I included stdio.h, unistd.h stdlib.h and errno.h 
int main(void)
{
  // Values returned from the four fork() calls
  pid_t rover1, rover2, rover3, rover4;

  int parentnumber, mynumber1, mynumber2, mynumber3, mynumber4;

  int childownnumber1 = 0, status = 1, …
Run Code Online (Sandbox Code Playgroud)

c operating-system fork pipe

5
推荐指数
1
解决办法
8182
查看次数

过程控制块

我的教授问这个问题作功课。

查阅Linux手册或Microsoft Windows手册。在您选择的操作系统中找到过程控制块(过程描述符)的实际内容。

我知道一般PCB包含

进程号或进程ID

工艺状态

程序计数器

CPU寄存器

CPU调度信息

内存管理信息

会计信息

I / O状态信息

我正在尝试查找手册,但没有在线看到它。有人可以帮助我吗?

operating-system

0
推荐指数
1
解决办法
8374
查看次数

标签 统计

operating-system ×2

c ×1

fork ×1

pipe ×1