(Redirected from Dev/zero)

/dev/zero is a special file in Unix-like operating systems that provides as many null characters (ASCII NUL, 0x00) as are read from it.[1] One of the typical uses is to provide a character stream for initializing data storage.[2]

Function edit

Read operations from /dev/zero return as many null characters (0x00) as requested in the read operation.

Unlike /dev/null, /dev/zero may be used as a source, not only as a sink for data. All write operations to /dev/zero succeed with no other effects. However, /dev/null is more commonly used for this purpose.

When /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 edit

/dev/zero was introduced in 1988 by SunOS-4.0 in order to allow a mappable BSS segment for shared libraries using anonymous memory.[3] HP-UX 8.x introduced the MAP_ANONYMOUS flag for mmap(), which maps anonymous memory directly without a need to open /dev/zero.[4] Since the late 1990s, MAP_ANONYMOUS[5] or MAP_ANON are supported by most UNIX versions, removing the original purpose of /dev/zero.[6]

Examples edit

The dd Unix utility program reads octet streams from a source to a destination, possibly performing data conversions in the process.

Destroying existing data on a file system partition or drive:

dd if=/dev/zero of=/dev/<destination drive or partition>

Creating a 1 MiB file, called foobar, filled with null characters:[7]

dd if=/dev/zero of=foobar count=1024 bs=1024

Note: The block size value can be given in SI (decimal) values, e.g. in GB, MB, etc. To create a GB file one would simply type:

dd if=/dev/zero of=foobar count=1 bs=1GB

Note: Instead of creating a real file with only zero bytes, many file systems also support the creation of sparse files which returns zeros upon reading but use less actual space.

See also edit

References edit

  1. ^ Mitchell, Mark; Oldham, Jeffrey; Samuel, Alex (2001), "6.5.2 /dev/zero", Advanced Linux Programming, Sams Publishing, p. 136, ISBN 9780735710436
  2. ^ Love, Robert (2007), "Mapping /dev/zero", Linux System Programming: Talking Directly to the Kernel and C Library, O'Reilly Media, Inc., pp. 259–260, ISBN 9780596009588
  3. ^ ""C" run-time program bootstrap from SunOS, contributed to CSRG for inclusion in 4.4BSD". TUHS.
  4. ^ "HP-UX 8.0.7 install media". 1992-07-22.
  5. ^ Beal, Chris. "So what the heck is anonymous memory". Oracle Blog. Archived from the original on 2021-04-15. Retrieved 2019-09-09.
  6. ^ "MAP_ANON description in mmap(2)". NetBSD. Archived from the original on 2019-11-25. Retrieved 2019-09-09.
  7. ^ Optimizing NFS Performance: Tuning and Troubleshooting NFS on HP-UX Systems, Dave (2002). Olker. Prentice Hall Professional. pp. 26–7. ISBN 9780130428165. Retrieved 2014-07-16.