Я написал короткую программу, которая умножает и делит два значения в двух процессах. Проблема возникает в конце приложения, при объединении я хочу результаты умножения и деления.Как использовать fork в C
Код:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[]) {
int iloczyn, a, b;
int *w_iloczyn, *w_a, *w_b;
float iloraz, suma, result;
float *w_iloraz, *w_suma, *w_result;
scanf("%d", &a);
scanf("%d", &b);
w_a = &a;
w_b = &b;
pid_t id = fork();
if (id == 0) {
iloczyn = (*w_a) * (*w_b);
w_iloczyn = &iloczyn;
printf("%d * %d = %d\n", *w_a, *w_b, *w_iloczyn);
} else {
int status = 255;
id = wait(&status);
id = waitpid(id, &status, 0);
iloraz = (float) *w_a/(float) *w_b;
w_iloraz = &iloraz;
printf("%d/%d = %f\n", *w_a, *w_b, *w_iloraz);
}
printf("Iloczyn: %i\n", *w_iloczyn);
printf("Iloraz: %f\n\n", *w_iloraz);
return 1;
}
В результате того, является нарушением защиты памяти. Что я делаю неправильно?
Процессы не разделяют память. –
Родительский и дочерний процессы имеют отдельные адресные пространства. – jarmod
, если вы хотите обмениваться памятью, вам нужен поток вместо нового процесса –