7
作作作作作作作作 作作作作 49852011 作作作

作業系統作業訂正

  • Upload
    rashad

  • View
    48

  • Download
    0

Embed Size (px)

DESCRIPTION

作業系統作業訂正. 資工三甲 49852011 張任頡. Q 3.10 包含最初父行程,下列程式建立多少行程 ?. #include #include int main() { /* fork a child process */ fork(); /* fork another child process */ fork(); /*and fork another */ fork(); return 0; }. Answer 3.10. - PowerPoint PPT Presentation

Citation preview

Page 1: 作業系統作業訂正

作業系統作業訂正

資工三甲49852011 張任頡

Page 2: 作業系統作業訂正

Q 3.10 包含最初父行程,下列程式建立多少行程 ?

#include<stdio.h>#include<unistd.h>int main(){

/* fork a child process */fork();

/* fork another child process */fork();

/*and fork another */fork();

return 0;}

Page 3: 作業系統作業訂正

Answer 3.10

Page 4: 作業系統作業訂正

Q 3.11使用下列程式,以辨認 pid的值在行 A 、 B 、 C 和 D 。 ( 假定實際父行程與子行程的 pids分別為 2600 和 2603 )

#include<stdio.h>#include<unistd.h>int main(){pid_t pid, pid1;/* fork a child process */pid = fork();if ( pid < 0) { /* error occurred */fprintf ( stderr, “Fork Failed ”) ;return 1;}else if (pid == 0) { /* child process */pid1 = getpid();printf("child : pid = %d",pid); /* A */printf("child : pid1 = %d",pid1); /* B */}else { /* parent process */pid1 = getpid();printf("parent : pid = %d",pid); /* C */printf("parent : pid1 = %d",pid1); /* D */wait(NULL);} return 0;}

Page 5: 作業系統作業訂正

Answer 3.11

A : pid = 0 →子行程本身的值 (fork 回傳的值 )

B : pid1 = 2603 → 子行程真正的值

C : pid = 2603 → 子行程的值 (fork 回傳後的值 )

D : pid1 = 2600 → 父行程真正的值

Page 6: 作業系統作業訂正

Q 3.12 使用下列程式解釋 Line A將輸出什麼

#include<sys/types.h>#include<stdio.h>#include<unistd.h>int value=5;int main(void){

pid_t pid;pid=fork();if (pid==0) { /* child process */

value+=15;return 0;

}else if (pid>0) { /* parent process */

wait(NULL);printf("PARENT: value = %d \n",value); /* Line A */return 0;

}}

Page 7: 作業系統作業訂正

Answer 3.12

PARENT: value = 5子行程的 value不影響父行程的 value雖然子行程改變 value 的值但是父行程的 value 值仍是 5。