Cod sursa(job #2277988)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 7 noiembrie 2018 09:59:48
Problema A+B Scor 0
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main(int argc, char *argv[]) {
	
    int n = argc;
    int i;
    pid_t fork_result;
	printf("Starting parent PID={%d}\n", getpid());
    for (i = 1; i <= n; i++) {
        fork_result = fork();
        if (fork_result > 0) {
        } else if (fork_result == 0) {
			int x = atoi(argv[i]);
			printf("%d: %d ", x, x);
			while (x != 1) {
				if (x % 2 == 0) {
					x /= 2;
				} else {
					x = 3 * x + 1;
				}
				printf("%d ", x);
            }
			printf("\n");
			printf("DONE! My PID={%d}, Parent PID={%d}\n", getpid(), getppid());
            // exit(0);
        } else if (fork_result < 0) {
            printf("parent says: fork() failed\n");
        }
    }
	for (i = 1; i <= n; ++i) {
		wait(NULL);	
	}
}