[C][LINUX] Funkcja clone zamiast fork i exec


(master of disaster) #1

Witam, mam taki prosty program:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
 
int main()
{
    int pid, nr_operacji, nr_sygnalu, i;
 
    nr_sygnalu = 14;
    nr_operacji = 1;
    pid = fork();
 
    for(i=0; i<3; i++)
    {
    
        switch(pid)
        {
            case -1:
                perror("execl error\n");
                exit(1);
                break;
            case 0:
                execl("./cw3a.x", "cw3a",nr_sygnalu,nr_operacji,NULL);
                break;
            default:
                sleep(1);
                break;
        }
        sleep(i);
    }
 
    printf("SIGTERM wyslany do %d uruchomionych procesow.\n",i);  
    kill(-getpgrp(), SIGTERM);
 
    return 0;
}

 

Potrzebuje rozwiązania które zamieni forka i execa, funkcja clone. Wiem że fork to jest zrobiony na clone, i prosze nie odsyłajcie mnie już do manuala bo go czytałem, tylko prosze o kawałek kodu z wytłumaczeniem.

 

Pozdrawiam.