zoukankan      html  css  js  c++  java
  • 操作系统 : 第一周作业

    1 //example_1.c
    2 
    3 #include <stdio.h>
    4 
    5 int main(void){
    6     printf("Hello World!! .
    ");
    7     return 0;
    8 }
     1 //example_2.c
     2 #include <unistd.h>
     3 #include <stdarg.h>
     4 #include <time.h>
     5 #include <sys/types.h>
     6 #include <sys/wait.h>
     7 #include <stdio.h>
     8 #include <stdlib.h>
     9 
    10 int tprintf(const char *fmt, ...){
    11     va_list args;
    12     struct tm *tstruct;
    13     time_t tsec;
    14     tsec = time(NULL);
    15     tstruct = localtime(&tsec);
    16     printf("%02d:%02d:%5d|", tstruct->tm_hour, tstruct->tm_min, tstruct->tm_sec, getpid());
    17     va_start(args, fmt);
    18     return vprintf(fmt, args);
    19 }
    20 int main(){
    21     int i=0, j=0;
    22     int pid;
    23     printf("Hello from Parent Process , PID is %d.
    ", getpid());
    24     pid = fork();
    25     if(pid == 0){
    26         sleep(1);
    27         for(i=0; i<3; ++i){
    28             printf("Hello from Child Process %d. %d times
    ", getpid(), i+1);;
    29             sleep(1);
    30         }
    31     }
    32     else if(pid != -1){
    33         tprintf("Parent forked one child process -- %d.
    ", pid);
    34         tprintf("Parent is waiting for child to exit.
    ");
    35         waitpid(pid, NULL, 0);
    36         tprintf("Child Process has exited.
    ");
    37         tprintf("Parent had exited.
    ");
    38     }
    39     else tprintf("Everyting was done without error
    ");
    40     return 0;
    41 }
     
    example_3.c
     1 #include <unistd.h>
     2 #include <stdarg.h>
     3 #include <time.h>
     4 #include <sys/types.h>
     6 #include <sys/wait.h>
     7 #include <stdio.h>
     8 #include <stdlib.h>
     9 
    10 int tprintf(const char *fmt, ...);
    11 
    12 int main(int argc, char const *argv[])
    13 {
    14     int pid;
    15     pid = fork();
    16     if(pid == 0){
    17         sleep(5);
    18         tprintf("Hello from Child Process !
    ");
    19         tprintf("I am calling exec.
    ");
    20         execl("/bin/ps", "-a", NULL);
    21         tprintf("You should never see this because child is already gone.
    ");
    22     }
    23     else if(pid != -1){
    24         tprintf("Hello from Parent, pid %d.
    ", getpid());
    25         sleep(1);
    26         tprintf("Parent forked process %d.
    ", pid);
    27         sleep(1);
    28         tprintf("Parent is waiting for child to exit.
    ");
    29         waitpid(pid, NULL, 0);
    30         tprintf("Parent had exited.
    ");
    31     }
    32     else tprintf("Everything was done without error.
    ");
    33     return 0;
    34 }
    35 
    36 int tprintf(const char *fmt, ...){
    37     va_list args;
    38     struct tm *tstruct;
    39     time_t tsec;
    40     tsec = time(NULL);
    41     tstruct = localtime(&tsec);
    42     printf("%02d:%02d:%5d|", tstruct->tm_hour, tstruct->tm_min, tstruct->tm_sec, getpid());
    43     va_start(args, fmt);
    44     return vprintf(fmt, args);
    45 }

    homework_1.c

     1 #include <stdio.h>
     2 #include <unistd.h>
     3 #include <sys/types.h>
     4 #include <sys/wait.h>
     5 #include <stdlib.h>
     6 
     7 int main(){
     8     int pid;
     9     pid = fork();
    10     if(pid > 0){
    11         pid = fork();
    12         if(pid >0){
    13             printf("parent : pid =  %d
    ", getpid());
    14             waitpid(pid, NULL, 0);
    15             printf("Child Process has exited.
    ");
    16             printf("Parent had exited
    ");
    17             exit(1);
    18         }
    19         else if(pid == 0){
    20             printf("child 2 : pid =  %d
    ", getpid());
    21             exit(0);
    22         }
    23     }
    24     else if(pid ==0){
    25         printf("child 1 : pid =  %d
    ", getpid());
    26         exit(0);
    27     }
    28     return 0;
    29 }

    homework_2.c

     1 #include <stdio.h>
     2 #include <unistd.h>
     3 #include <sys/types.h>
     4 #include <sys/wait.h>
     5 #include <stdlib.h>
     6 
     7 int main(){
     8     int pid;
     9     int n, i;
    10     scanf("%d", &n);
    11     for(i=0;i<n;++i){
    12         pid = fork();
    13         if(pid == 0){
    14             printf("child : pid : %d , ppid : %d 
    ", getpid(), getppid());
    15             continue;
    16         }
    17         else if(pid > 0){
    18             waitpid(pid, NULL, 0);
    19             exit(1);
    20         }
    21     }
    22     return 0;
    23 }
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/wait.h>
    #include <stdlib.h>
    int main(int argc, char const *argv[])
    {
        int pid[5];
        int i;
        for(i=0;i<5;++i){
            pid[i] = fork();
            if(pid[i]==0){
                printf("zi(%d) pid:  %d,  fu pid: %d 
    ", i+1, getpid(), getppid());
                exit(0);
            }
        }
        for(i=0;i<5;++i)
            waitpid(pid[i], NULL, 0);
        printf("fupid: %d 
    ", getpid());
        return 0;
    }
  • 相关阅读:
    20160130.CCPP体系详解(0009天)
    20160129.CCPP体系详解(0008天)
    20160128.CCPP体系详解(0007天)
    20160127.CCPP体系详解(0006天)
    20160126.CCPP体系详解(0005天)
    程序员_你的“强迫症”有哪些?
    天天写业务代码_如何成为技术大牛?
    阿里云全球首批MVP李文毅专访-一个“改邪归正”的90后
    【毕业季】穿越回毕业前一年_这次你会怎么选
    恢复Hyper-V虚拟机丢失的数据文件过程
  • 原文地址:https://www.cnblogs.com/firstrate/p/3325700.html
Copyright © 2011-2022 走看看