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.
The manual pages
- Solnix: mkfifo(8) from
pkgs.solnix.illumos-world-man· illumos.org - Linux: mkfifo(1) coreutils-full-9.11
- FreeBSD: mkfifo(1) 15.1-RELEASE
- OpenBSD: mkfifo(1) 8.0
- NetBSD: mkfifo(1) 11.0
- Standard: POSIX.1-2024 (IEEE Std 1003.1-2024),
mkfifo
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 with | Topic | What differs |
|---|---|---|
| Linux | SELinux/SMACK context options | Linux 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) |
| Linux | long options | Linux 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 umask | FreeBSD 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 four | errors with several arguments | Solnix 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 four | environment variables | The 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, NetBSD | parent directory permission | The 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 four | large files note and man section | The 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
- POSIX: mkfifo is a POSIX.1-2024 utility.
- Solnix: Interface Stability: Standard (ATTRIBUTES table).
- FreeBSD: The mkfifo utility is expected to be IEEE Std 1003.2 (“POSIX.2”) compliant.
- OpenBSD: The mkfifo utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification.
- NetBSD: The mkfifo utility is expected to be IEEE Std 1003.2-1992 (“POSIX.2”) compliant.
Writing portable scripts
- Use only mkfifo [
-mmode] file... in portable scripts. That is the only form all five pages document. Leave out-Zand--context, which are Linux-only. - In a symbolic
-mmode, + 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.