creer un processus sous linux - c++ ; helllpppp!

heyyyyy ! est ce qu il y a qlq un peut m expliquer comment on cree des processus dans linux en c++ ( a partir du pere on va creer jusqu'a 5 generation ) puis comment on lui donne le pid ( pere 1 - 1er generation 11 et 12 - 2eme generation 111 et 112 / 121 et 122 .... ) tout ce que je que j utlise pid = fork () ; explication SVP !!!!
En principe, ce forum est anglophone, mais bon...

Pour créer un processus sous Linux, on utilise fork() ou une combinaison de fork() et exec() (voir man fork et man exec pour la doc).

En résumé:

fork() créer une copie exacte du processus qui l'appelle. Cela veut dire que fork() est appelé une fois par le processus père, mais retourne DEUX fois (une fois dans le processus père et une fois dans le processus fils). Pour différencier dans quel processus on se trouve après fork(), on utilise sa valeur de retour (qui vaut 0 si on est dans le processus fils, et le pid du fils si on est dans le père).

Le programmeur ne peut pas choisir le pid de ses processus, cela est géré par le kernel.

Un processus peut connaitre son pid à tout moment en appelant getpid(), et le pid de son père en appelant getppid()

Si le but d'un processus est de créer un nouveau processus en exécutant un autre exécutable, on utilise fork(), puis on appelle exec() dans le fils.

closed account (DNwq5Di1)
try in english next time , i think that'll give you mor answers..
that means that first i create a process child by pid_t pid = fork(); then to create another process from the child process i use exec () ! :

int main () {

pid_t pid= fork(); <------- i create the child processu ?

if (pid ==0){ <------ we check if its a child process ?

printf("child process , pid = %d , ppid = %d ",getpid(),getppid() );<----- we show pid ans ppid
}
else {
if (pid != -1){ <------ Why -1 ? ?

printf("father process , pid = %d , ppid = %d ",getpid(),getppid() )

.......

}

if that correct i had created a process then now how i am gonna use this cross to create a new process ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main ()
{
    pid_t pid= fork(); // i create the child processu ?

    if (pid == 0) { // we check if its a child process ?

        printf("child process , pid = %d , ppid = %d ",getpid(),getppid() ); // we show pid ans ppid

        execl("/bin/ls", "/bin/ls", (char*) 0); // Run a program.
        // never reach this point because of execl().
    }
    else {
        if (pid != -1){ // was the fork successful?

            printf("father process , pid = %d , ppid = %d ",getpid(),getppid() );
        }
        else {
            // There was an error -- fork() failed.
        }
    }
    int status;
    wait(&status);
    return status;
}


I hope this answers your question. It runs /bin/ls in the child process.
ok that's good but i have a question suppose we have a father process ( 1 ) and we are gonna create 2 process child ( 1.1 and 1.2 ) then we ask the user to choose if he wants to create a process and if yes he choose to create from 1.1 or 1.2 a process child ( 1.1.1 or 1.2.1 ) how can we do that ! to determine wich process to chose to create the new process !
Topic archived. No new replies allowed.