Есть ли / dev / null в Windows? - PullRequest
       25

Есть ли / dev / null в Windows?

381 голосов
/ 24 ноября 2008

Что эквивалентно /dev/null в Windows?

Ответы [ 7 ]

458 голосов
/ 24 ноября 2008

Я думаю, вы хотите NUL, по крайней мере, в командной строке или командных файлах.

Например:

type c:\autoexec.bat > NUL

не создает файл.

считаю то же самое верно, если вы пытаетесь создать файл программно, но я не пробовал.)

В PowerShell вы хотите $null:

echo 1 > $null
61 голосов
/ 24 ноября 2008

Согласно этому сообщению в списке рассылки GCC , вы можете использовать файл "nul" вместо / 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;
}

(Кредиты Дэнни для этого кода; скопированы из его сообщения.)

Вы также можете использовать этот специальный файл "nul" через перенаправление.

40 голосов
/ 05 января 2015

NUL в Windows кажется виртуальным путем в любой папке. Так же, как .., . в любой файловой системе.

Использовать любую папку с NUL будет работать.

Пример,

echo 1 > nul
echo 1 > c:\nul
echo 1 > c:\users\nul
echo 1 > c:\windows\nul

имеют тот же эффект, что и /dev/null в Linux.

Это было проверено в Windows 7, 64-разрядная версия.

34 голосов
/ 24 ноября 2008

Джон Скит прав. Вот страница Nul Device Driver в документации Windows Embedded (я понятия не имею, почему это не где-то еще ...).

Вот еще одно:

7 голосов
/ 24 мая 2017

NUL также работает программно. Например. следующее:

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

работает должным образом без создания файла. (MSVC ++ 12.0)

3 голосов
/ 02 июня 2018

Если вам нужно выполнить в Microsoft Windows эквивалент символической ссылки на /dev/null в Linux, вы должны открыть и ввести cmd администратора и набрать:

Для файлов:

mklink c:\path\to\file.ext NUL:

Или, для каталогов:

mklink /D c:\path\to\dir NUL:

Это сохранит файл / direcotry всегда на 0 байт и будет по-прежнему возвращать успех при каждой попытке записи.

0 голосов
/ 02 декабря 2017

Для этого необходимо использовать start и $ NUL в Windows PowerShell :

Введите в этой команде, предполагая, что mySum - это имя вашего приложения, а 5 10 - аргументы командной строки, которые вы отправляете.

start .\mySum  5 10 > $NUL 2>&1

Команда start запускает отдельный процесс, эффект, аналогичный &. Опция /B запрещает запуску открытия нового окна терминала, если запущенная программа является консольным приложением. NUL соответствует Windows * /dev/null. 2>&1 в конце перенаправит stderr на стандартный вывод, который все пойдет на NUL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...