2015-12-02 64 views
1

這是使用Minix在C中打印進程ID和父進程ID的程序。我試圖編譯此代碼下面的測試代碼來返回ID,但它不是編譯。任何幫助,將不勝感激。向Minix添加打印父進程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,但它不在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); 

} 
+0

你會得到什麼錯誤信息? – MikeCAT

+0

test.c:13:26:error:使用未聲明的標識符'PRINTPPIDS' _syscall(PM_PROC_NR,PRINTPPIDS,&m); –

+0

您將不得不在'main()'函數中定義'PRINTPPIDS' – MikeCAT

回答

2

字面上確保更新和運行進行業務之前保存的所有文件+安裝,然後重新編譯測試類。花了4個小時毫無意義地盯着我的代碼,因爲它嘆息

相關問題