Est-il un /dev/null sur Windows?
7 réponses
Je pense que vous voulez NUL
, au moins dans une invite de commande ou des fichiers batch.
Par exemple:
type c:\autoexec.bat > NUL
Ne crée pas de fichier.
(Je crois la même chose est vraie si vous essayez de créer un fichier par programme, mais je ne l'ai pas essayé.)
Dans PowerShell, vous voulez $null
:
echo 1 > $null
Selon ce message sur la liste de diffusion GCC , vous pouvez utiliser le fichier "nul" au lieu de / dev / null:
#include <stdio.h>
int main ()
{
FILE* outfile = fopen ("/dev/null", "w");
if (outfile == NULL)
{
fputs ("could not open '/dev/null'", stderr);
}
outfile = fopen ("nul", "w");
if (outfile == NULL)
{
fputs ("could not open 'nul'", stderr);
}
return 0;
}
(crédits à Danny pour ce code; copié-collé de son message.)
Vous pouvez également utiliser ce fichier spécial " nul " via la redirection.
Jon Skeet a raison. Voici la page Nul Device Driver dans la documentation Windows Embedded (Je n'ai aucune idée de pourquoi ce n'est pas ailleurs...).
Voici un autre:
NUL
dans Windows semble être en fait un chemin virtuel dans n'importe quel dossier. Comme ..
, .
dans n'importe quel système de fichiers.
Utiliser n'importe quel dossier suivi avec NUL fonctionnera.
Exemple,
echo 1 > nul
echo 1 > c:\nul
echo 1 > c:\users\nul
echo 1 > c:\windows\nul
Ont le même effet que /dev/null
sur Linux.
Cela a été testé sur Windows 7, 64 bits.
NUL
fonctionne également par programme. Par exemple:
freopen("NUL", "w", stderr);
Fonctionne comme prévu sans créer de fichier. (MSVC++ 12.0)
, Vous devez utiliser démarrer et $NUL pour cela, dans Windows PowerShell:
Tapez cette commande en supposant que mySum
est le nom de votre application et 5
10
sont des arguments de ligne de commande que vous envoyez.
start .\mySum 5 10 > $NUL 2>&1
La commande start
démarre un processus détaché, un effet similaire à &
. L'option /B
empêche start d'ouvrir une nouvelle fenêtre de terminal si le programme que vous exécutez est une application console. et NUL
est L'équivalent de Windows de /dev/null
. Le 2>&1
à la fin redirigera stderr vers stdout, qui ira tous à NUL
.
Si vous devez effectuer dans Microsoft Windows l'équivalent d'un lien symbolique vers /dev/null
sous Linux, vous devez ouvrir et administrateur cmd
et tapez:
Pour les fichiers:
mklink c:\path\to\file.ext NUL:
Ou, pour les répertoires:
mklink /D c:\path\to\dir NUL:
Cela gardera le fichier/direcotry toujours à 0 octet, et retournera toujours le succès à chaque tentative d'écriture.