目前,我有一个父流程管道信息给孩子,并通过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;
}
}
}