我正在尝试修改sched服务器,并试图将它打印出一些信息给stdout或stderr,但没有运气。我试过printf,fprintf,sprintf,puts,fputs。关于我应该怎么做的任何想法?我开始认为,无论出于何种原因,即使服务器中有printfs,也无法让服务器打印出来。
我尝试在schdule_process,start_scheduling和balance_queues中添加这些。
#include <stdio.h>
static void balance_queues(minix_timer_t *tp)
{
struct schedproc *rmp;
int proc_nr;
printf("Test prinf\n");
fprintf(stdout, "Test fprintf stdout\n");
fprintf(stderr, "Test fprintf stderr\n");
puts("Test puts\n");
fputs("Test fputs stdout", stdout);
fputs("Test fputs stderr", stderr);
for (proc_nr=0, rmp=schedproc; proc_nr < NR_PROCS; proc_nr++, rmp++) {
if (rmp->flags & IN_USE) {
if (rmp->priority > rmp->max_priority) {
rmp->priority -= 1; /* increase priority */
schedule_process_local(rmp);
}
}
}
set_timer(&sched_timer, balance_timeout, balance_queues, 0);
}
这是我尝试过的balance_queues功能。我很确定这不是我的代码的问题,而是使用minix的东西,我还不明白。我花了最后2个小时阅读和搜索Tanenbaums和Woodhulls&#34; The Minix书 - 操作系统,设计和实现&#34;第三版但无法找到任何东西。根据我的理解,这个函数应该每隔5秒调用一次以平衡队列,但我没有打印到命令行!