mkfifo(8) on Solnix vs Linux and the BSDs

On Solnix, mkfifo is the illumos /usr/bin/mkfifo, which takes only -m mode. Linux adds SELinux/SMACK options (-Z, --context) that Solnix lacks. The BSDs match Solnix's flag set (-m only). Solnix documents per-argument error handling and locale environment variables that the other pages do not.

What Solnix runs

A default Solnix system runs the illumos mkfifo at /usr/bin/mkfifo, and no other variants are shipped. The page also has a ksh93 section describing a mkfifo with options and a long --mode=mode form, but the bundle does not say how that variant is invoked. The page is filed as mkfifo(8); the Linux and BSD pages are mkfifo(1).

Differences

Compared withTopicWhat differs
LinuxSELinux/SMACK context optionsLinux mkfifo has -Z and --context[=CTX] to set the SELinux or SMACK security context. The Solnix /usr/bin/mkfifo synopsis has only -m, so a Linux script using -Z fails on Solnix.
Source: Linux mkfifo(1) -Z, --context; Solnix mkfifo(8) SYNOPSIS and OPTIONS (/usr/bin/mkfifo)
Linuxlong optionsLinux accepts --mode=MODE, --help and --version. The Solnix /usr/bin/mkfifo documents only -m. The --mode=mode form appears only in the page's ksh93 section.
Source: Linux mkfifo(1) -m, --mode, --help, --version; Solnix mkfifo(8) OPTIONS (/usr/bin/mkfifo and ksh93 sections)
FreeBSD-m and umaskFreeBSD says -m sets the permission bits ignoring the umask of the calling process. Solnix and Linux describe the default as a=rw minus the umask, and the Solnix text does not say whether -m bypasses the umask.
Source: FreeBSD mkfifo(1) -m; Solnix mkfifo(8) DESCRIPTION and -m; Linux mkfifo(1) -m
all fourerrors with several argumentsSolnix documents that each FIFO is created completely or not at all, and that after an error mkfifo writes a diagnostic to standard error and continues with the remaining arguments. The Linux and BSD pages do not say this.
Source: Solnix mkfifo(8) DESCRIPTION (/usr/bin/mkfifo); Linux, FreeBSD, OpenBSD, NetBSD mkfifo(1) DESCRIPTION
all fourenvironment variablesThe Solnix page lists LANG, LC_ALL, LC_CTYPE, LC_MESSAGES and NLSPATH as affecting mkfifo, via environ(7). The Linux and BSD pages in the bundle list no environment variables for mkfifo.
Source: Solnix mkfifo(8) ENVIRONMENT VARIABLES; Linux, FreeBSD, OpenBSD, NetBSD mkfifo(1)
FreeBSD, OpenBSD, NetBSDparent directory permissionThe FreeBSD, OpenBSD and NetBSD pages state that mkfifo needs write permission in the parent directory. The Solnix page does not say this.
Source: FreeBSD mkfifo(1) DESCRIPTION; OpenBSD mkfifo(1) DESCRIPTION; NetBSD mkfifo(1) DESCRIPTION; Solnix mkfifo(8) DESCRIPTION
all fourlarge files note and man sectionThe Solnix page is mkfifo(8) and refers to largefile(7) for files of 2^31 bytes or more. The other systems document mkfifo in section 1 and have no such reference. Use man 8 mkfifo on Solnix if man 1 finds nothing.
Source: Solnix mkfifo(8) USAGE and footer MKFIFO(8); Linux, FreeBSD, OpenBSD, NetBSD mkfifo(1)

Standards

Writing portable scripts

  • Use only mkfifo [-m mode] file... in portable scripts. That is the only form all five pages document. Leave out -Z and --context, which are Linux-only.
  • In a symbolic -m mode, + and - are relative to a=rw on every system documented here. Prefer an octal mode, or write the full mode as a symbolic value such as a=rw, to avoid surprises.

Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.