C 向Minix添加打印父进程ID系统调用

C 向Minix添加打印父进程ID系统调用,c,system,system-calls,minix,C,System,System Calls,Minix,这是一个使用Minix在C中打印进程ID和父进程ID的程序。我试图编译下面的测试代码以返回ID,但它没有编译。任何帮助都将不胜感激 //Program to print its Process ID, Parent Process ID #include <stdio.h> #include "pm.h" // for various global variables #include "mproc.h" // for process table mproc

这是一个使用Minix在C中打印进程ID和父进程ID的程序。我试图编译下面的测试代码以返回ID,但它没有编译。任何帮助都将不胜感激

//Program to print its Process ID, Parent Process ID 

  #include <stdio.h>
  #include "pm.h"  // for various global variables 
  #include "mproc.h"  // for process table mproc

int do_printppids(void)
{

int idx = m_in.m1_i1;
int n = m_in.m1_i2;
while(n > 0 )
{
    int pid = mproc[idx].mp_pid;
    if(pid)
    {
        int parent = mproc[mproc[idx].mp_parent].mp_pid;
        printf("proc: %sn", mproc[idx].mp_name);
        printf("Pid: %d, PPid %dn", pid, parent);
        n++;
    }
    else
    {
        n = 0;
    }
    idx++;
}
return 1;
}
//用于打印其进程ID、父进程ID的程序
#包括
#包括各种全局变量的“pm.h”//
#对于过程表mproc,包括“mproc.h”//
int do_printppid(无效)
{
int idx=m_in.m1_i1;
int n=m_in.m1_i2;
而(n>0)
{
int-pid=mproc[idx].mp_-pid;
如果(pid)
{
int parent=mproc[mproc[idx].mp\u parent].mp\u pid;
printf(“进程:%sn”,mproc[idx].mp\u名称);
printf(“Pid:%d,PPid%dn”,Pid,父项);
n++;
}
其他的
{
n=0;
}
idx++;
}
返回1;
}
这是我的测试类,用于尝试返回进程ID和父进程ID,但它不是在Minix中编译的

#include <lib.h>    // provides _syscall and message
#include <stdio.h>
#include <stdlib.h> // provides atoi

int main(void) {


message m;      // Minix uses message to pass parameters to a system call

m_in.m1_i1 = 0;
m_in.m1_i2 = 10;    

_syscall(PM_PROC_NR, PRINTPPIDS, &m);

}
#include//提供_系统调用和消息
#包括
#包括//atoi
内部主(空){
message m;//Minix使用message将参数传递给系统调用
m_in.m1_i1=0;
m_in.m1_i2=10;
_系统调用(PM_PROC_NR、printppid和m);
}

在运行make Service+Install之前,请确保更新并保存所有文件,然后重新编译测试类。花了4个小时毫无意义地盯着我的代码,因为它叹息

你得到了什么错误消息?测试c:13:26:错误:使用未声明的标识符“printppid”\u系统调用(PM\u PROC\n r,printppid,&m);您必须在我可以从
main()
函数中看到的某个地方定义
printppid
printppid
是在
callnr.h
文件中定义的,调用号为70。为什么要这么做?只需使用:
pid\u t parentPid=getppid()当然,代码需要
#包括
#包括