Cod sursa(job #2485199)

Utilizator lucianistratiIstrati Lucian lucianistrati Data 1 noiembrie 2019 09:51:26
Problema Aria Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 2.04 kb
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <errno.h>	
#include <sys/wait.h>
int Collatz(int n)
{
     while(n!=1)
     {
        if(n%2==0)
        {
		printf("%d ",n/2);
                n=n/2;
        }
        else
        {
		printf("%d ",3*n+1);
                n=3*n+1;
        }
     }
}

int main(int argc, char* argv[])
{ 
 int i,n;
int v[10];
         printf("%d",Collatz(10));
//return 0;
        n=argc;
	printf("%d ",argc); 
	for(i=1;i<=argc;i++)
	{
	 	char *t=argv[i];
		v[i]=atoi(t);
                //printf("%d: ",Collatz(argv[i]));
 		//printf("%s: ",typeof(v[i]));
 	        printf("%d: ",v[i]);
	}
        for(i=0;i<argc;i++)
         {
            Collatz(v[i]);
         }
        
	char* shm_ptr;
        char shm_name[]="myshm";
        int shm_fd;     
        shm_fd = shm_open(shm_name,O_CREAT,S_IRUSR);
        if(shm_fd<0){
                perror(NULL);
                return errno;
        }
        //printf("%d\n",shm_fd);
        //ftruncate(3);
        size_t shm_size=1000;
        if(ftruncate(shm_fd,shm_size)==-1){
                perror(NULL);
                shm_unlink(shm_name);
                return errno;
        }
        //shm_unlink(shm_fd);
 shm_ptr = mmap(0,shm_size,PROT_READ,MAP_SHARED,shm_fd,0);
	if(shm_ptr==MAP_FAILED){
		perror(NULL);
		shm_unlink(shm_name);
		return errno;
	}
	munmap(shm_ptr,100);
    
     int pid1,pid2,pid3;
     pid1=fork();
   if (pid1 == 0) { 
        sleep(3);
        printf("Done Parent %d Me %d",getpid(),getppid());
    } 
  
    else { 
        pid2 = fork(); 
        if (pid2 == 0) { 
            sleep(2);
printf("Done Parent %d Me %d",getpid(),getppid());
        } 
        else { 
            pid3 = fork(); 
            if (pid2 == 0) {  
printf("Done Parent %d Me %d",getpid(),getppid());
            } 
            else {  
                sleep(3);  
printf("Done Parent %d Me %d",getpid(),getppid());
            } 
        } 
    } 
   
        return 0;
}