我遇到了execve命令有點問題。程序測試應該創建兩個孩子,每個孩子應該運行一個execve來加載和運行另一個程序。但是,我在這兩個execve上都收到了不好的地址。代碼如下:Execve給出錯誤的地址
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <errno.h>
#include <time.h>
#include <sys/ipc.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(){
int child_1, child_2;
child_1=fork();
if(child_1==0){
char* argv[]={"Test", "Test_1", "NULL"};
if((execve("Test_1", argv, NULL))<0) perror("execve 1 fail");
exit(0);
}else if(child_1<0)perror("error fork");
else wait(NULL);
child_2=fork();
if(child_2==0){
char* argv1[]={"Test", "Test_2", "NULL"};
if((execve("Test_2", argv1, NULL))<0) perror("execve 2 fail");
exit(0);
}else if(child_2<0)perror("error fork");
else wait(NULL);
return 0;
}
它不會導致錯誤*本身*,但是在第二個分支前等待(')第一個孩子是可疑的。如果這兩個孩子是按順序運行的,那麼就是這樣做的方法,但如果他們想要同時運行,那麼父母不應該等到分岔了兩個孩子之後。 –
感謝您的提示。它應該同時工作,所以我會嘗試你的建議。 – Leo