On success, the number of bytes read is returned (zero indicates end of file), and the file position is advanced by this number.
Это описание, которое я копирую из man 2 read, у меня есть вопрос к "этому положению файла в этом числе".
Что я хочу сделать в своем коде:следующее:
for (int i = 1; i < argc; i++) {
if (read(pipe_fd[i-1][0], &contribution, sizeof(int)) == -1) {
perror("reading from pipe from a child");
exit(1);
}
if (i == argc){
i = 1;
}
}
Я пытаюсь многократно читать данные из каналов, которые соединяют каждый дочерний процесс с моим родительским процессом, мой вопрос к этому посту: будет читать помнить, когда он должен продолжить чтение, когда в следующий разЯ звоню читать снова?
Например, предположим, что я звоню read(pipe_fd[1][0], &contribution, sizeof(int))
, из того, что я здесь понимаю, я знаю, что read прочитает sizeof (int) байтов из канала и каким-то образом использует вызов fseek или что-то подобное для перемещения sizeof (int) байты до следующей новой стартовой позиции.Но когда я перебираю цикл и снова меняю на чтение (pipe_fd [1] [0]), будет ли чтение помнить его последнюю начальную позицию?(что происходит после первого вызова read, новой стартовой позиции, которую я описал выше) Или read просто предполагает, что ничего не происходит, и читает из начальной стартовой позиции вместо новой стартовой позиции?