Advertisement
paulogp

Fork

Jul 15th, 2011
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.08 KB | None | 0 0
  1. /* fork
  2.  output
  3.  <id processo pai>: Ola2
  4.  <id processo filho>: Ola2
  5.  <id processo filho>: Ola3
  6.  <id processo pai>: 2, Ola2 */
  7.  
  8. // Apple Xcode
  9. // paulogp
  10.  
  11.  
  12. #include <stdio.h>
  13. #include <unistd.h> // fork
  14. #include <stdlib.h> // wait
  15.  
  16. int main (int argc, const char * argv[])
  17. {
  18.     pid_t the_pid;
  19.     char *the_ptr;
  20.     char the_text[100] = "Ola1\n";
  21.    
  22.     the_ptr = &(the_text[3]); // aponta para a posicao do 1 na palavra Ola1
  23.    
  24.     // criacao de fork
  25.     the_pid = fork();
  26.    
  27.     the_text[3] = '2'; // Ola1 -> Ola2
  28.    
  29.     // ambos (pai e filho) fazem o seguinte output:
  30.     // <id processo pai>: Ola2
  31.     // <id processo filho>: Ola2
  32.     printf("%d: %s\n", getpid(), the_text);
  33.    
  34.     if (the_pid == 0) // filho
  35.     {
  36.         // o processo filho nao afecta o pai
  37.         // <id processo filho>: Ola3
  38.         *the_ptr = '3'; // Ola2 -> Ola3
  39.         printf("%d: %s\n", getpid(), the_text);
  40.         exit(0);
  41.     }
  42.    
  43.     wait(NULL);
  44.    
  45.     // <id processo pai>: 2, Ola2
  46.     printf("%d: %c, %s\n", getpid(), *the_ptr, the_text);
  47.    
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement