小编Ver*_*rkr的帖子

使用 write() C 函数时出现 SIGPIPE 错误

我真的不知道为什么当我尝试在文件描述符 fd2 上使用 write() 时,它只会结束程序。当我使用 valgrind 时,我得到“进程以信号 13 (SIGPIPE) 的默认操作终止”。有问题的行是write(fd2[1], &num, sizeof(num));

这段代码的重点是创建一个子进程,然后让子进程生成一个随机数,然后通过管道将其传递给父进程。然后父母需要创建另一个孩子并将他从第一个孩子收到的数字通过另一个管道传递给第二个孩子。这个程序是针对我的一门大学课程的。

/*
 * Ejemplo de codigo que genera un numero aleatorio y lo muestra por pantalla
 */
#include <sys/types.h>
#include <sys/wait.h>

 #include <time.h>
 #include <stdlib.h>
 #include <stdio.h>
#include <unistd.h>



int main(int argc, char *argv[]) {

    int pid1,pid2,fd1[2],fd2[2],pipe_status1,pipe_status2;

    pipe_status1=pipe(fd1);
    if(pipe_status1 == -1) {
        perror("Error creando la tuberia 1\n");
        exit(EXIT_FAILURE);
    }
    pipe_status2=pipe(fd2);
    if(pipe_status2 == -1) {
        perror("Error creando la tuberia 2\n");
        exit(EXIT_FAILURE);
    }

    pid1 = fork();
    if (pid1 < …
Run Code Online (Sandbox Code Playgroud)

c pipe

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

标签 统计

c ×1

pipe ×1