У меня есть эта проблема, чтобы решить, что я понятия не имею, как это сделать, потому что есть только несколько системных вызовов, которые мы можем использовать, чтобы решить ее, и я не понимаю, как они полезны для ситуации.
Упражнение:
У меня есть матрица с размером [10] [1000000] с целыми числами, и для каждой строки я создаю новый процесс с помощью fork (). Идея каждого процесса состоит в том, чтобы просмотреть все числа для этой конкретной строки и найти конкретное число, а затем напечатать сообщение об этом. Это был первый шаг проблемы, и это сделано. Второй шаг - вывести сумму вхождений этого числа в каждой строке по порядку . И, в конце концов, общее количество вхождений этого числа.
Звонки:
Системные вызовы, которые я могу использовать, описаны в документе для этого упражнения следующим образом:
pid_t fork(void);
void exit(int status);
pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
Проблема:
Я понятия не имею, как это сделать, потому что вызов exit()
позволяет мне передать только число ниже 256, что если число вхождений больше этого числа? Как мне вернуть такой номер?
Другая проблема:
Я не совсем понимаю разницу между wait()
и waitpid()
и как / где использовать один над другим. Помимо справочных страниц, есть ли еще документация, где я могу увидеть примеры кода и тому подобное, чтобы лучше их понять? Или кто-то может объяснить мне различия и привести базовый пример, демонстрирующий такие различия?