Question

J'essaie d'utiliser une gemme Ruby appelée shotgun qui nécessite une commande fork (2) que j'ai découverte être une commande Linux et qui pourrait être disponible dans Cygwin. Est-il possible de le rendre disponible via le shell de commande Windows?

Était-ce utile?

La solution

fork (2) correspond à kludgey sous Cygwin, car le modèle de processus Windows ne le permet pas facilement. Cygwin peut autoriser son application à l'utiliser, mais vous allez subir de graves problèmes de performances car Cygwin doit émuler tout à la main, y compris la copie des données exécutables, la copie des descripteurs ouverts, etc.

.

Selon le nombre de fusils utilisés par fork (2) , cette émulation peut être douloureuse ou relativement mineure.

Voici un bon sujet sur GameDev.net pour discuter de la absence de fonction fork sous Win32. Ils évoquent quelque chose sur lequel je n'ai pas la patience ni la possibilité d'accéder à la plate-forme, mais qui semble à la fois amusant, dangereux et explosif:

  

Donc, vous devez contourner Win32 et appeler l'API native ({Nt | Zw} CreateProcess). Le livre "Windows Nt / 2000 Native Api Reference" a un exemple "Création d'un processus Win32". C'est peut-être ce dont vous avez besoin.

Je suis intrigué, mais je doute que Cygwin l'utilise. Pour réitérer ma réponse à votre question, elle est probablement là: beaucoup d'applications Unix reposent sur fork , et Cygwin le rend probablement disponible. Ne vous attendez pas à des miracles, vous devez informer Ruby de Cygwin en le recompilant pour inclure sa couche d'émulation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top