fork()和wait()系统调用(Fibonacci,quicksort和合并这两个)

时间:2011-11-01 22:19:18

标签: merge fork wait quicksort fibonacci

我的作业应该使用fork()和wait()系统调用:

1)使用fork()系统调用编写两个C程序,在子进程中生成以下内容: a)命令行中提供的m号的斐波纳契序列(我实际做的唯一任务是什么:)

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h> 
int main() {
      int a=0, b=1, n=a+b,i,ii;
      pid_t pid;
      printf("Enter the number of a Fibonacci Sequence:\n");
      scanf("%d", &ii);
      if (ii < 0)
          printf("Please enter a non-negative integer!\n");
      else    {
          pid = fork();
      if (pid == 0)
      {
         printf("Child is producing the Fibonacci Sequence...\n");
         printf("%d %d",a,b);
         for (i=0;i<ii;i++)
         {
            n=a+b;
            printf("%d ", n);
            a=b;
            b=n;
         }
         printf("Child ends\n"); 
      }
      else 
      {
         printf("Parent is waiting for child to complete...\n");
         wait(NULL);
         printf("Parent ends\n");
      }    }    return 0; }

b)从命令行提供的n个数字的快速排序(我不知道我是否只需要编写quicksort算法或实现fork()或者我不知道了?)

对于这两个程序,父进程调用wait()调用以等待子进程在退出程序之前完成。执行必要的错误检查以确保在命令行上传递非负数。

2)将上面两个程序(这是我不知道怎么做)合并为一个,其中一个父进程将分叉两个子进程,一个用于Fibonacci序列,以及另一个为quicksort。应该从命令行参数中获取程序的输入。您的源程序必须命名为 merge.c 。命令行如下所示: 合并 这里,m和n是两个正整数。因此,你的程序应该生成m个随机整数(这也是我也不知道,在C中生成随机数)并用快速排序对它们进行排序,并计算第n个斐波纳契数。输出应如下:

*Quicksort Process Started
Random Numbers Generated
6 8 3 10 25 5 2 30
Sorted Sequence
2 3 5 6 8 10 25 30
Quicksort Process Exits*

我需要快速帮助:(谢谢youuuu :)

1 个答案:

答案 0 :(得分:0)

你的第一个程序看起来基本正确。如果你把斐波纳契部分作为自己的功能,你会让你的生活更轻松。

你的快速排序程序应该以同样的方式编写。致电fork并让孩子进行排序。

要生成随机数,请使用'rand'功能。 (C和C ++相同。)