我正在使用Minix 3。
我实现了一个名为do_identify的新系统调用,它返回当前进程的id或父进程。以下是 /usr/src/servers/pm/misc.c
及其库的系统调用的定义,我将其命名为 identifylib.h < / strong>,在 /usr/include
下:
定义:
PUBLIC int do_identify()
{
int identifier = m_in.m1_i1;
if(identifier == 1)
{
printf("Current Process ID = %d\n", getpid());
return getpid();
}
else
{
printf("Parent Process ID = %d\n", getppid());
return getppid();
}
}
库:
#include <lib.h>
#include <unistd.h>
PUBLIC int identify (int process)
{
message m;
m.m1_i1 = process;
return ( _syscall(PM_PROC_NR, IDENTIFY, &m) );
}
现在,当我测试它时,我收到以下错误:
对getppid的未定义引用
我是否错误地调用了此功能?或者我不应该在系统调用中调用此函数?我不知道它应该在minix上意味着什么。
以下是测试文件: test_id.c
#include <identifylib.h>
int main(void)
{
printf("Process ID = %d\n" identify(1));
return 0;
}