Je dois créer un nouveau processus avec un flux d'erreurs standard redirigé vers un fichier. Le code à partir duquel le processus enfant est créé n'a pas de console disponible, donc il y a des cas où GetStdHandle (any) renverra 0. Le processus enfant essayera de dupliquer toutes ses poignées IO standard pour une raison quelconque (le code source pour le processus enfant n'est pas disponible) donc toutes ses poignées devraient être valides.Comment ouvrir un fichier "nul"?
donc je dois courir ce processus de la même manière qu'il est peut être exécuté à partir de la console avec:
someproc <nul >nul 2>err
Je vois des moyens pour cela: 1. Créez deux paires de tuyaux. C'est peut-être une bonne solution, mais ce sera trop complexe pour moi. 2. Ouvrez le fichier "nul" avec l'appel de fonction CreateFile ("nul", ...). Aucun fichier n'est créé par cet appel, mais cela me semble bizarre. 3. Utilisez INVALID_HANDLE_VALUE. Cela fonctionne aussi, mais je pense qu'il peut y avoir différents problèmes avec d'autres processus fils.
Je crois qu'il existe de meilleurs moyens.
Très bien! Merci d'avoir listé les possibilités. –