我被授予該項目的啓動代碼,但難以理解子程序如何執行。瞭解子代程序在此代碼中的執行方式
int pid ;
int child_info = -1;
if (argv[0] == NULL) /* nothing succeeds */
return 0;
if((pid= fork()==-1)
perror("fork");
else if (pid == 0){
signal(SIGINT, SIG_DFL);
signal(SIGQUIT, SIG_DFL);
execvp(argv[0], argv);
perror("cannot execute command");
exit(1);
}
else { //check if wait error or print out exit status
if (wait(&child_info) == -1)
perror("wait");
else {
printf("Exit status: %d, %d\n", child_info>>8, child_info&0377);
}
}
return child_info;
}
看代碼,當前進程叉,在這種情況下,孩子都繼承父進程的相關性,因爲不涉及定時器,信號或任何東西。但是,新進程的pid值在18000範圍內,所以如何執行execvp(argv[0], argv)
,因爲在這種情況下,pid!= 0.
我不明白你的問題...... – 2011-04-22 02:20:14