Page 1 sur 1

fork_()

Publié : mar. 31/mars/2009 9:55
par Anonyme
Comment créer un nouveau processus "enfant " à partir d'un simple code :

le pere et le fils partage la même console !

Code : Tout sélectionner

Macro pid_t
i
EndMacro


pid.pid_t
nom$ = "Father"

pid = fork_()

If pid=0
OpenConsole()
	nom$ = "Childreen"
		PrintN(" i'am "+nom$)
	Else
	OpenConsole()
		PrintN(" i'am "+nom$)

EndIf 



Input()

Publié : mar. 31/mars/2009 12:26
par cha0s
Version plus élaboré

Code : Tout sélectionner

Macro pid_t
i
EndMacro
#SIGKILL = 9 ;signal qui tue un processus linux

pid.pid_t
nom$ = "Father"

pid = fork_()

If pid=0
   OpenConsole()
   nom$ = "Childreen"
   PrintN(" i'am " + nom$ " + le PID de mon pere est " + str(getppid_()))
   Input()
ElseIf pid>0
   OpenConsole()
   PrintN(" i'am " + nom$ + " mon PID est " + str(getpid_())
   PrintN("je vais tuer mon fils")
   input()
   kill_(pid, #SIGKILL)
Else
   Printn("rachète toi un PC t'arrive même plus a créer un processus")
EndIf

Input()
Je n'ai pas testé mais sa doit marcher

Publié : mar. 31/mars/2009 12:28
par Progi1984
Pas mal vos codes...

Vous etes vousdéjà penché vers les daemons en purebasic ?

Publié : mar. 31/mars/2009 15:19
par cha0s
Pas trop le temps de faire un DAEMON mais si vous voulez le principe :

On crée un programme que l'on place dans /etc/init.d/. Ce programme comporte une boucle infinie qui se réveille tout les X seconde (grâce a un delay). Tout les X secondes notre programme vérifie sont répondeur pour voir si il a des signaux qui lui sont parvenue. Si il y a des signaux il crée un processus fils qui va exécuter la tache relative au signal tandis que le père se rendors pour X secondes.

Les programmes dans /etc/init.d/ sont exécuté automatiquement au démarrage.

Pour envoyer des signaux au DAEMON il faut connaitre sont PID (identifiant du processus) que vous pouvez récupérer facilement grâce a la commande "top" par exemple. Après on envoie un signal avec KILL. Il existe beaucoup de doc sur les signaux unix je vous laisse regarder sur google.

Sinon vous pouvez aussi utiliser un tube pour communiquer avec le DAEMON.