【发布时间】:2021-12-31 02:28:30
【问题描述】:
所以我想在 c 中编写递归系统调用,它从一个进程(孩子、孙子、..)中获取所有后代。我使用的系统是 Minix 3.2.1,但我认为它应该与大多数 UNIX 系统没有太大不同。但是我的函数抛出了非常丑陋的错误。 代码如下:
int do_whoMaxDescendants(void)
{
int maxChildren = 0;
pid_t found = -1;
for (int proc_nr = 0; proc_nr < NR_PROCS; ++proc_nr)
{
if (mproc[proc_nr].mp_flags & IN_USE)
{
int children = kidCount(proc_nr);
if (children > maxChildren)
{
maxChildren = children;
found = mproc[proc_nr].mp_pid;
}
}
}
return found;
}
int kidCount(int currParent)
{
int children = 0;
for (int nextParent = 0; nextParent < NR_PROCS; ++nextParent)
{
if ((mproc[nextParent].mp_flags & IN_USE) && (mproc[nextParent].mp_parent == currParent))
{
children++;
children = kidCount(nextParent) + children;
}
}
return children;
}
错误看起来像这样:
【问题讨论】:
标签: c unix system-calls minix