Path: ...!2.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!paganini.bofh.team!not-for-mail From: Francois LE COAT Newsgroups: fr.comp.sys.atari Subject: =?UTF-8?Q?Re:_fork=28=29_sous_Multitos_question_=c3=a0_Fran=c3=a7oi?= =?UTF-8?Q?s?= Date: Thu, 4 May 2023 18:10:29 +0200 Organization: To protect and to server Message-ID: References: <81f7a286-e4ae-495c-9527-d15d720575a1n@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: quoted-printable Injection-Date: Thu, 4 May 2023 16:10:30 -0000 (UTC) Injection-Info: paganini.bofh.team; logging-data="473543"; posting-host="FA92OzQsKw/evhUqc0ALDw.user.paganini.bofh.team"; mail-complaints-to="usenet@bofh.team"; posting-account="9dIQLXBM7WM9KzA+yjdR4A"; User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:91.0) Gecko/20100101 SeaMonkey/2.53.16 Cancel-Lock: sha256:NTOT+t2Bdxczc2LQOPAOuQl9r/QcQ65AxZa9LOIYjEA= X-Notice: Filtered by postfilter v. 0.9.3 Bytes: 5645 Lines: 108 Salut, OL =E9crit=A0: >>> Voici le code modifi=E9: >>> >>> /* * Programme who|wc : compte le nombre d'utilisateurs */ #include=20 >>> >>> #include #include >>> >>> void main(void); int p[2]; /* Identificateurs des canaux de=20 >>> communication */ >>> void main() >>> {=A0=A0 int pid; /* Identificateur des processus */ =A0=A0 if(pipe(p)= !=3D0) >>> =A0=A0=A0 {=A0=A0=A0=A0=A0=A0=A0 perror("\nCreation d'un canal imposs= ible\n"); >>> =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 exit(1); >>> =A0=A0=A0 } >>> >>> =A0=A0=A0 pid=3Dfork(); >>> =A0=A0=A0 if(pid=3D=3D0) >>> =A0=A0=A0 { /* Processus FILS : Il execute "who" */ >>> =A0=A0=A0=A0=A0=A0=A0 close(1); /* Fermeture de la sortie standard */= >>> =A0=A0=A0=A0=A0=A0=A0 dup(p[1]); /* Duplique la sortie du fils en sor= tie standard */ >>> =A0=A0=A0=A0=A0=A0=A0 close(p[0]); /* L'entree du fils ne sert plus a= rien */ >>> =A0=A0=A0=A0=A0=A0=A0 close(p[1]); /* La sortie non plus */ >>> =A0=A0=A0=A0=A0=A0=A0 execlp("who","who",NULL); >>> =A0=A0=A0 } >>> =A0=A0=A0 else =A0=A0 if(pid<0) >>> =A0=A0=A0 {=A0=A0=A0=A0=A0=A0=A0 perror("\nFork impossible\n"); >>> =A0=A0=A0 } >>> =A0=A0=A0 /* Processus P=E8re pas besoin de fork c'est stupide pour f= aire=20 >>> juste who|wc si on n'a pas besoin d'attendre et de faire autre chose*= / >>> >>> =A0=A0=A0 close(0); /* Fermeture de l'entree standard */ >>> =A0=A0=A0 dup(p[0]); /* Duplique l'entree du pere en entree standard = */ >>> =A0=A0=A0 close(p[0]); /* L'entree du pere ne sert plus a rien */ >>> =A0=A0=A0 close(p[1]); /* La sortie non plus */ >>> =A0=A0=A0 execlp("wc","wc",NULL); >>> =A0=A0=A0 printf("semble que quelque chose s'est mal pass=E9!\n"); >>> =A0=A0=A0 exit(1); >>> } >> >> Oui, je suis d'accord. C'est =E9quivalent. Mais =E7a n'est pas ce que >> j'avais =E9crit. Mon programme a l'int=E9r=EAt de montrer l'usage de l= a >> fonction wait(). `wait` est aussi une commande Unix, que j'utilise >> fr=E9quemment dans les scripts shell. L'int=E9r=EAt du programme n'=E9= tait pas >> d'=EAtre le plus concis possible, mais d'apprendre l'usage du fork(). >=20 > Le probl=E8me c'est que ce n'est pas ce que tu as dit, j'avais tr=E8s b= ien=20 > insist=E9 sur l'attente et tu as dit que je n'avais en gros rien compri= s,=20 > chez moi b=E9otien cela veut dire "inculte", le profane, l'ignorant (au= =20 > regard de ta soit disant grande culture dans le domaine) et que tu as=20 > bien pr=E9cis=E9 tout seul comme un grand alors que je n'avais parl=E9 = que=20 > d'attente pour =EAtre sur de n'avoir rien laiss=E9 que c'=E9tait pour j= e te=20 > cite : >> Il faut bien attendre (sans rien faire), sinon la fin duprocessus=20 >> p=E8re, met fin aux deux processus >fils et petit-fils. > Ce qui est parfaitement faux et cela est vrai par contre lorsque l'on=20 > parle de thread! >> >> Donc je pr=E9f=E8re ma version. Il y a toujours beaucoup de styles >> diff=E9rents pour =E9crire la m=EAme chose. Chacun son style. Sinon, >> je n'emploie pas le terme "thread" car =E7a n'est pas la m=EAme chose.= >> On parle bien d'un programme parall=E8le bas=E9 sur le multi-processin= g. > Le probl=E8me c'est que vu ce que tu as dit plus haut tu as confondu=20 > process et thread! >=20 > Faut redescendre de ton nuage et r=E9fl=E9chir 2 fois avant de rabaisse= r les=20 > gens =E0 longueur de posts avec ta soit disant sup=E9riorit=E9. Mainten= ant=20 > chacun =E9crit son code comme il veut du moment que cela marche et sur = mon=20 > premier post je n'ai rien eu =E0 redire notes le (j'ai pass=E9 sous sil= ence=20 > les erreurs de frappes grossi=E8res car sans importance le pinaillage t= r=E8s=20 > peu pour moi) cela ne t'a pas emp=EAch=E9 de partir comme en 40! Oui enfin, je veux bien que tu critiques mon travail, avec un esprit un peu pol=E9mique, mais il s'agit de ce que j'ai pr=E9sent=E9 =E0 mes =E9tu= diants. Alors que toi Olivier, tu es un hobbyiste. Le jour o=F9 tu pr=E9senteras le fruit de ton travail qui te fait vivre, je le critiquerai de mani=E8re= sans doute moins d=E9sinvolte que tu ne le fais. D'o=F9 mon =E9nervement = =2E.. --=20 Fran=E7ois LE COAT Auteur de Eur=EAka 2.12 (Grapheur 2D, Modeleur 3D) http://eureka.atari.org/