Advertisement
paulogp

Fork

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