Я пытаюсь понять, как работает следующая программа, которую я написал для Raspberry Pi со светодиодной матрицей.
Предполагается, что в программе дочерний процесс, разветвленный основным процессом, загорится светодиод с 0,0 -0,8 на первой итерации для num = 0.Но вместо этого светодиоды случайным образом загораются в 0-м столбце.
Пример: в 0-м столбце 0,6,4,5,2,3,1 в 1-м столбце 0,6,5,4,2,3,1 и так далее до 8-го столбца.
Я не понимаю, почему «основной» цикл управления строками работает случайным образом, но второй цикл управления столбцами работает упорядоченно возрастающим образом.
Чего мне не хватает вработа fork вместе с циклом for?
Из вывода я могу только догадываться, что родитель каким-то образом одновременно создает случайные дочерние процессы, которые вызывают функцию 2 со своим аргументом случайного числа.
<header files>
function1
{ creates a delay of a second through calculations }
function2(n)
{ for(int i = 0; i<=8 ;i++)
function1;
printf("LED(%d,%d)\n",n,i);
}
main()
{
for(int num = 0; num <=7; num++)
{
pid_t pid = fork();
if (pid ==0)
{ function2(num); }
}
for (int num =0; num <= 7; num++)
{ wait(NULL);}
}