SEGFAULT尝试fgetc从管道读取

时间:2017-09-27 07:23:12

标签: c process segmentation-fault fgetc

目前,我有一个父流程管道信息给孩子,并通过fgetc读出他们的STDOUT。我遍历轮次并使用fdopen存储第一轮的文件指针,并在下一轮再次调用它。

问题是,在第一轮中,read_line会产生完美的读数,但在第二轮中,fgetc会遇到段错误。

错误讯息:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7791330 in __GI___uflow (fp=0x6041b0) at genops.c:381
381     return *(unsigned char *) fp->_IO_read_ptr++;

阅读功能:(我知道它并不是最好的) 澄清。它第一次工作。为什么第二次失败呢? 许多其他问题似乎只是有不同的错误。

char* read_line(FILE* file,int currentP, Players *players) {
    char* result = malloc(sizeof(char) * 80);
    int position = 0;
    int next = 0;
    for (int i = 0; i < players->players[currentP].position; i++) {
        next = fgetc(file);
    }
    while (1) {
        next = fgetc(file);
        //players->players[currentP].position++;
        if (next == '!') {
            return "!";
        }
        if (next == EOF || next == '\n') {
            result[position] = '\0';
            return result;
        } else {
            result[position++] = (char)next;
        }
    }  
}

0 个答案:

没有答案