我有以下的程序,當我運行該程序,我覺得真的很困惑的是,爲什麼我的程序沒有EXCUTE爲什麼程序在這個C編程或unix編程(execvp()系統調用)中沒有執行某些語句?
int num=i;
printf("it is No.%d !",num);
printf("hello , I will excute execvp!");
我的程序基本上創建6個進程EXCUTE executionbode()函數,然後用execvp超載原始程序。但是,每次運行程序時,字符串「你好,我將執行execvp」永遠不會顯示出來!我還認爲上面的這三句話在運行程序中也沒有執行?有人可以告訴我爲什麼嗎?這是我的程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include "makeargv.h"
#include "redirection.h"
#include <sys/wait.h>
int executionnode(int i);
int main(){
pid_t childpid;
int i;
int row=6;
for(i=0;i<row;i++)
{ childpid=fork();
if(childpid==0)
continue;
else if (childpid>0)
executionnode(i);
else {
perror("something wrong");
exit(1);
}
}
}
int executionnode(int i){
sleep(i);
printf("hello, I am process:%ld\n",(long)getpid());
wait(NULL);
char *execArgs[] = { "echo", "Hello, World!", NULL };
int num=i;
printf("it is No.%d !",num);
printf("hello , I will excute execvp!");
execvp("echo", execArgs);
}
有人可以告訴我爲什麼嗎?以及如何解決它?我覺得這真的很奇怪?這是因爲execvp()函數嗎?我剛開始學習操作系統,所以我非常困惑!感謝你們對我的幫助!
1)使用調試器2)閱讀'wait'的手冊頁 – Olaf
這裏有個提示:誰是子進程在等待,爲什麼?回答這個問題將會很快解決您的問題。另外,更確切地說,'execvp'會覆蓋* current *過程映像。 – tonysdg