无效的内存引用(管道)

时间:2018-05-08 18:27:09

标签: c gcc memory reference pipeline

我的程序有问题,我真的需要快速处理它。你能帮助我吗 ?我得到"无效的内存参考(SIGSEGV)"错误,我不知道如何解决它。我尝试了一些事情,但我仍然得到同样的信息......我会感激任何帮助。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <time.h>
#include <unistd.h>

void producent(int *filedes)
{
    char *bufor; 
    FILE *p; 
    close (filedes[0]);
    srand( time( NULL ));

    bufor=(char*)malloc(256);
    p=fopen("producent.txt", "e");

    while (p!=NULL)
    {
      printf("producent:\n");
      printf("%s\n", bufor);
    if (write(filedes[1],bufor, 256)==-1)
        {
        perror("Blad funkcji write\n");
        exit(1);
    }
    sleep(rand);
    }
    fclose(p);
    close (filedes[1]);
    free(bufor);
    wait(NULL);
  }

  void konsument (int *filedes)
  {
    char *bufor;
    FILE *k; 
    close (filedes[1]);
    srand(time( NULL ));

    bufor=(char*)malloc(256);
    k=fopen("konsument.txt", "s");

    while (read(filedes[0],bufor,256)>0)
    {
      printf("konsument:\n");
      printf("%s\n",bufor );
      fputs(bufor,k);
      sleep(rand);
    }
    fclose(k);
    close(filedes[1]);
    free(bufor);
  }

  int main()
  {
    int filedes[2];
    switch (fork())
    {
      case -1:
        perror("Bląd funkcji fork\n");
        exit(1);
        break;
      case 0:
        konsument(filedes);
        break;
      default:
        producent(filedes);
        break;
    }
    return 0;
  }

感谢您提供任何帮助!

0 个答案:

没有答案