fork(), wait(), exec() et autres sous Win?

fork(), wait(), exec() et autres sous Win? - C - Programmation

Marsh Posté le 19-10-2006 à 03:16:27    

Bonjour à tous.
Je ne suis pas toujours sous linux, donc,je code aussi sous win.
Sauf que la je suis bien embete : j'ai besoin de fonctions de unistd.h
qui forcement ne vont pas fonctionner sous windows...
 
Pourriez vous m'indiquer des tutos sur la façon de faire l'equivalent de
fork et wait sous windows? que je me fasse un petit .h avec des  
bidules de compilations conditionnelle pour appeller les bonnes fonctions
sous win...
(ou meme juste le nom des fonctions, la je googleise depuis un moment,  
mais je trouve rien... Dois pas avoir les bons mots clés)

Reply

Marsh Posté le 19-10-2006 à 03:16:27   

Reply

Marsh Posté le 19-10-2006 à 04:03:04    

Salut,
 
Je ne connais pas du tout la prog Linux donc je vais peut être dire une connerie mais il me semble qu'il n'existe pas d'équivalent de ces fonctions sous windows.
 
Tu vas devoir utiliser les apis de manipulation de processus et de thread :  
http://windowssdk.msdn.microsoft.c [...] S.80).aspx
 
Sinon la question avait déjà été posée ici : http://forum.hardware.fr/hardwaref [...] 2606-1.htm  :whistle:  
 

Reply

Marsh Posté le 19-10-2006 à 04:03:25    

2 approches à considérer:
a) Cygwin et sa couche d'émulation
b) faire de même que les autochtones et se coltiner avec Win32
 
Si a) est simple d'emploi on est coincé avec le CRT & co cygwin, donc gcc, et ce n'est pas optimal.
 
Dans le 2ième cas de figure, attendu que dans le joyeux monde des fenetres la sémantique des threads - et des IPC - n'a rien à voir, il va vous falloir genereusement emballer le tout.
google: CreateProcess, CreateFileMapping, MapViewOfFile, CreateThread, CreateSemaphore, WaitForSingleObject, WaitForMultipleObjects etc...

Reply

Marsh Posté le 19-10-2006 à 04:16:25    


a)Cig, c'est sympa, mais ça reste une solution "partielle"... a ce moment la, autant rebooter sous ma gentoo, pis coder normalement avec kwrite et gcc...
 
b) Donc, ça serait la solution que je devrais employer... mais j'ai vu la tete des trucs, ça a l'air nettement moins simple que ce bon vieux fork... et pour faire une fonction generique qui appelle un fork sous linux ou la fonction qui va bien sous win, ça m'a l'air mal barré  :pfff:  
 
ça vous parrait réalisable de faire ce genre de fonction generique et ensuite faire un code portable?
j'ai un peu l'impression que je risque d'etre obligé de faire deux codes differents, un pour chaque systeme, si je veux aller par la...
CreateProcess, il prend 10 arguments :| et aucun n'est un type de données basique :/
foulala, ça a l'air assez affreux la prog windows...
 
En tous cas, merci de l'aide, des liens, des explications, toussa  :jap:  
 

Reply

Marsh Posté le 19-10-2006 à 04:50:17    

Tout dépend de votre cahier des charges.
Si c'est de produire une abstraction du modèle fork typiquement *nix pour un portage minimal, c'est certes possible. Mais fatalement innéficace.
Si vous avez des contraintes de performance alors vous vous devrez de taper plus haut, du fait de divergences fondamentales (et pas seulement dans le nombre d'arguments nécessaire à la création d'un processus).
 
J'ai oublié de mentionner OpenMP. Si par chance celà colle à vos besoins, n'hésitez pas; gcc 4.2, qui ne devrait plus tarder à sortir, le fournit en standard pour le C, C++, Fortran etc... ce sur toutes les platformes. Et c'est aussi disponible avec MSVC 8 et ICC 9.

Reply

Marsh Posté le 19-10-2006 à 05:14:43    

en fait, je n'ai pas de cahier des charges precis, ni de besoin "pressant" d'utiliser ces fonctions, c'est a titre d'apprentissage...
 
Et si je peux réussir a faire une petite abstraction de l'OS a ce niveau, je m'en servirai pour des petites choses, comme une interface (afficher quelquechose dans le shell tout en "ecoutant" le clavier pour attendre une action de l'utilisateur : exemple simple, afficher des resultats successifs a l'ecran, en ayant la possibilité d'appuyer sur une touche pour mettre en pause...)
 
Apres, pour ce qui est de faire de gros projets serieux, il est peu probable que je tente le coup en C...
 
Je suppose en outre que si je dois faire une utilisation intensive de telles fonctions, il est fortement preferable d'optimiser le résultat en collant au mieux aux specifications du systeme...
 
En tous cas merci pour tous ces conseils, liens, recommandations :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed