Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* fork
- output
- <id processo pai>: ole1
- <id processo filho>: ole1
- <id processo filho>: ole2
- <id processo pai>: ole1
- <id processo pai>: 1, ole1 */
- // Apple Xcode
- // paulogp
- #include <stdio.h>
- #include <unistd.h> // fork
- #include <stdlib.h> // wait
- int main (int argc, const char * argv[])
- {
- pid_t the_pid;
- char *the_ptr;
- char the_text[100] = "Ola1\n";
- the_ptr = the_text + 3; // aponta para a posicao do 1 na palavra Ola1
- // criacao de fork
- the_pid = fork();
- the_text[2] = 'e'; // Ola1 -> Ole1
- // ambos (pai e filho) fazem o seguinte output:
- // <id processo pai>: ole1
- // <id processo filho>: ole1
- printf("%d: %s\n", getpid(), the_text);
- if (the_pid > 0) // pai (>0)
- {
- // <id processo pai>: ole1
- wait(NULL); // aguarda que filho termine
- printf("%d: %s\n", getpid(), the_text);
- }
- else
- {
- // o filho na afecta o pai
- // <id processo filho>: ole2
- *the_ptr = '2'; // 2: Ole1 -> Ole2
- printf("%d: %s\n", getpid(), the_text);
- exit(0);
- }
- // <id processo pai>: 1, ole1
- printf("%d: %c, %s\n", getpid(), *the_ptr, the_text);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement