首页 > 解决方案 > 尝试使用 pipe() 系统调用时出错

问题描述

编译我的代码时出现错误,错误表明被调用的管道对象不是函数,也不是指向函数的指针。我真的不知道发生了什么,我真的很困惑,因为我在互联网上找不到关于它的东西。这是我得到的错误: Linux 命令提示符输出:

这是给我错误的函数代码:

#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
#include "empleados.h"

void EnviarPipe(emple *miemp, int cuantos, char pipeNombre[], char id[]) {

  int creado, fds[2], pid;
   
  if(pipe(fds) == -1)
  {
    printf("\n[ERROR]-El pipe no se pudo abrir con exito.\n");
    return;
  }

  if((pid = fork()) == 0)
  {
    close(fds[0]); //se cierra el de lectura por que no se va a usar
    for(int i = 0; i < cuantos; i++)
    {
      dprintf(fds[1], "%s ", miemp[i].nombre);
      dprintf(fds[1], "%d ", miemp[i].edad);
      dprintf(fds[1], "%f ", miemp[i].salario);
      dprintf(fds[1], "->Encontrado por el buscador con ID: %s \n", id); //Por cada linea se indica que proceso buscador fue el que la escribio
    }
    close(fds[1]); //se cierra el fd de escritura
    exit(0);
  }
  else if(pid < 0)
  {
    printf("\n[ERROR]-Fallo en la creacion del sub-proceso buscador.\n");
  }
  wait(NULL);

}

希望有人发现发生了什么。提前致谢!

标签: coperating-systempipeposix

解决方案


推荐阅读