Pagini recente » Cod sursa (job #633003) | Cod sursa (job #1736934) | Cod sursa (job #379806) | Cod sursa (job #1529442) | Cod sursa (job #2072622)
#include <sys/types.h>
#include<stdio.h>
#include<unistd.h>
#include<sys/wait.h>
#include<stdlib.h>
#include<errno.h>
#include<sys/mman.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<string.h>
int main()
{
int i=0;
int n;
printf("Introdu n: ");
scanf ("%d" ,&n);
int* v=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
scanf("%d",&v[i]);
printf("Numerle: ");
char nume_mem[]="memoria";
int memo;
memo=shm_open(nume_mem, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
if(memo<0)
{
perror(NULL);
return errno;
}
size_t memo_size=512*(n-1);
if(ftruncate(memo,memo_size)==-1)
{
perror(NULL);
shm_unlink(nume_mem);
return errno;
}
for(i=0;i<n;++i)
{
void *mem_ptr=mmap(0,512,PROT_WRITE,MAP_SHARED, memo, i*512);
int c;
int a=v[i];
pid_t pid= fork();
if(pid<0) return errno;
else
if(pid==0)
{
c=snprintf(mem_ptr,512,"%d: ",a);
while(a!=1)
{
if(n%2==1)
n=n*3+1;
else
n=n/2;
c+=snprintf(mem_ptr+c,512-c," ");
munmap(nume_mem,512);
}
}
}
for(i=0;i<n;i++)
{
int copil=wait(NULL);
}
return 0;
}