Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
/dev/zero
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Confuse|Null device}} {{Short description|Special file in Unix-like operating systems}} {{Use dmy dates|date=February 2020|cs1-dates=y}} {{mono|'''/dev/zero'''}} is a [[special file]] in [[Unix-like]] [[operating system]]s that provides as many [[null character]]s ([[ASCII]] NUL, 0x00) as are read from it.<ref>{{citation|title=Advanced Linux Programming|first1=Mark|last1=Mitchell|first2=Jeffrey|last2=Oldham|first3=Alex|last3=Samuel|publisher=Sams Publishing|year=2001|isbn=9780735710436|url=https://books.google.com/books?id=oRqqAVyXjwAC&pg=PA136|contribution=6.5.2 /dev/zero|page=136}}</ref> One of the typical uses is to provide a character stream for initializing data storage.<ref>{{citation|title=Linux System Programming: Talking Directly to the Kernel and C Library|first=Robert|last=Love|publisher=O'Reilly Media, Inc.|year=2007|isbn=9780596009588|url=https://books.google.com/books?id=k_ocKY0iegsC&pg=PA259|contribution=Mapping /dev/zero|pages=259β260}}</ref> ==Function== Read operations from {{mono|/dev/zero}} return as many [[null character]]s (0x00) as requested in the read operation. Unlike {{mono|[[/dev/null]]}}, {{mono|/dev/zero}} may be used as a source, not only as a sink for data. All write operations to {{mono|/dev/zero}} succeed with no other effects. However, {{mono|/dev/null}} is more commonly used for this purpose. When {{mono|/dev/zero}} is memory-mapped, e.g., with [[mmap]], to the virtual address space, it is equivalent to using anonymous memory; i.e. memory not connected to any file. ==History== {{mono|/dev/zero}} was introduced in 1988 by SunOS-4.0 in order to allow a mappable BSS segment for shared libraries using anonymous memory.<ref>{{cite web |title="C" run-time program bootstrap from SunOS, contributed to CSRG for inclusion in 4.4BSD |url=https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.4BSD/usr/src/contrib/sun.sharedlib/lib/csu/m68k/crt0.s |website=TUHS}}</ref> HP-UX 8.x introduced the MAP_ANONYMOUS flag for mmap(), which maps anonymous memory directly without a need to open {{mono|/dev/zero}}.<ref>{{cite web |title=HP-UX 8.0.7 install media |date=22 July 1992 |url=https://archive.org/details/hp-ux8.07forhp9000s7xx}}</ref> Since the late 1990s, MAP_ANONYMOUS<ref>{{cite web |last1=Beal |first1=Chris |title=So what the heck is anonymous memory |url=https://blogs.oracle.com/cwb/so-what-the-heck-is-anonymous-memory |website=Oracle Blog |access-date=2019-09-09 |archive-date=2021-04-15 |archive-url=https://web.archive.org/web/20210415103111/https://blogs.oracle.com/cwb/so-what-the-heck-is-anonymous-memory |url-status=dead }}</ref> or MAP_ANON are supported by most UNIX versions, removing the original purpose of {{mono|/dev/zero}}.<ref>{{cite web |title=MAP_ANON description in mmap(2) |url=https://netbsd.gw.com/cgi-bin/man-cgi?mmap |website=NetBSD |access-date=2019-09-09 |archive-date=2019-11-25 |archive-url=https://web.archive.org/web/20191125152633/https://netbsd.gw.com/cgi-bin/man-cgi?mmap |url-status=dead }}</ref> ==Examples== [[Data erasure|Erasing]] a file system partition or drive: cp /dev/zero /dev/<destination drive or partition> (Note that this does not perform a secure erasure, may not destroy the data at all, and may take significantly more time than required β for this purpose, domain-specific tooling like ''blkdiscard'' may be preferred for devices that support [[Trim (computing)|TRIM]].) Creating a 1 [[mebibyte|MiB]] file, called ''[[foobar]]'', filled with null characters: head -c $(( 1024 * 1024 )) /dev/zero > foobar Instead of creating a file really filled with only zero bytes, many file systems also support the creation of [[sparse file]]s, which return zeros upon reading but use less actual space. The classic way of doing this (without the domain-specific ''truncate'' utility) would be, to create a 1 [[gibibyte|GiB]] file: dd {{abbr|bs|block size}}=1 seek=$(( 1024 * 1024 * 1024 - 1 )) count=1 < /dev/zero > foobar which seeks to position ''seek''Β·''bs''=1GiBβ1 in the output and copies ''count''Β·''bs''=1 byte from /dev/zero, thus making the file contain only one data block. ==See also== * [[Unix philosophy]] * [[Standard streams]] * {{mono|[[:/dev]]}} * {{mono|[[:/dev/null]]}} * {{mono|[[:/dev/full]]}} ==References== {{Reflist}} {{DEFAULTSORT:Dev Zero}} [[Category:Unix file system technology]] [[Category:Device file]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Abbr
(
edit
)
Template:Citation
(
edit
)
Template:Cite web
(
edit
)
Template:Confuse
(
edit
)
Template:Distinguish
(
edit
)
Template:Mono
(
edit
)
Template:Rcatsh
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Use dmy dates
(
edit
)