【发布时间】:2018-09-26 09:48:24
【问题描述】:
我试图弄清楚我为带有 LED 矩阵的树莓派编写的以下程序是如何工作的。
该程序应该有一个由主进程分叉的子进程在第一次迭代中从 0,0 -0,8 点亮 LED,num=0。但是,第 0 列的 LED 会随机亮起。
示例:在第 0 列 0,6,4,5,2,3,1 在第一列 0,6,5,4,2,3,1 依此类推,直到第 8 列。
我很困惑为什么控制行的“主”循环随机运行,但控制列的第二个循环以有序递增的方式运行。
在 fork 和 for 循环的工作中我缺少什么?
从输出中,我只能猜测父进程以某种方式同时创建了随机子进程,这些子进程使用随机数参数调用 function2。
<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);}
}
【问题讨论】:
标签: c raspberry-pi3 raspbian