Ya, itu setara, tetapi jelas hanya jika Anda mengatakan mknod
untuk 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 strace
dalamnya identik untuk kedua perintah:
mknod("foobar", S_IFIFO|0666) = 0
Jadi dalam hal syscalls, mkfifo
sebenarnya adalah singkatan mknod
.
Maka, perbedaan terbesar adalah dalam semantik. Dengan mkfifo
Anda 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, mknod
bisa 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)
).