Est-il un /dev/null sur Windows?

Quel est l'équivalent de /dev/null sur Windows?

351
demandé sur Peter Mortensen 2008-11-24 02:28:38

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
426
répondu Jon Skeet 2016-01-18 11:09:07

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.

55
répondu strager 2018-04-27 02:56:37

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:

32
répondu Foredecker 2018-04-27 02:58:18

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.

30
répondu Jerry 2018-04-27 03:00:14

NUL fonctionne également par programme. Par exemple:

freopen("NUL", "w", stderr);

Fonctionne comme prévu sans créer de fichier. (MSVC++ 12.0)

4
répondu ava 2017-05-24 16:29:26

, 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.

0
répondu HaSeeB MiR 2018-04-27 03:01:37

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.

0
répondu Marco 2018-06-04 01:00:11