Ya, itu setara, tetapi jelas hanya jika Anda mengatakan mknoduntuk benar-benar membuat FIFO, dan bukan perangkat blok atau karakter (jarang dilakukan hari ini seperti devtmpfs / udev melakukannya untuk Anda).
mkfifo foobar
# same difference
mknod foobar p
Di stracedalamnya identik untuk kedua perintah:
mknod("foobar", S_IFIFO|0666) = 0
Jadi dalam hal syscalls, mkfifosebenarnya adalah singkatan mknod.
Maka, perbedaan terbesar adalah dalam semantik. Dengan mkfifoAnda dapat membuat banyak FIFO dalam sekali jalan:
mkfifo a b c
Dengan mknod, karena Anda harus menentukan jenisnya, ia hanya menerima satu argumen:
# wrong:
$ mknod a b c p
mknod: invalid major device number ‘c’
# right:
mknod a p
mknod b p
mknod c p
Secara umum, mknodbisa jadi sulit digunakan dengan benar. Jadi jika Anda ingin bekerja dengan FIFO, tetap ikuti mkfifo.
mkfifo(2)sebenarnya adalah panggilan sistem yang terpisah darimknod(2)(tapi itu akhirnya akan melakukan hal yang persis sama sepertimknod(S_FIFO)).