हां, यह समतुल्य है, लेकिन जाहिर है कि अगर आप mknod
वास्तव में एक फीफो बनाने के लिए कहते हैं, और ब्लॉक या कैरेक्टर डिवाइस नहीं है (शायद ही कभी इन दिनों जैसा कि devtmpfs / udev आपके लिए करता है)।
mkfifo foobar
# same difference
mknod foobar p
में strace
यह दोनों आदेश के लिए समान है:
mknod("foobar", S_IFIFO|0666) = 0
तो syscalls के संदर्भ में, mkfifo
वास्तव में के लिए आशुलिपि है mknod
।
सबसे बड़ा अंतर, शब्दार्थ में है। साथ mkfifo
आप एक ही बार में FIFOs का एक समूह बना सकते हैं:
mkfifo a b c
चूंकि mknod
, आपको टाइप निर्दिष्ट करना है, यह केवल एक तर्क को स्वीकार करता है:
# wrong:
$ mknod a b c p
mknod: invalid major device number ‘c’
# right:
mknod a p
mknod b p
mknod c p
सामान्य तौर पर, mknod
सही ढंग से उपयोग करना मुश्किल हो सकता है। तो अगर आप FIFO के साथ काम करना चाहते हैं, तो छड़ी करें mkfifo
।
mkfifo(2)
वास्तव में एक अलग सिस्टम कॉल हैmknod(2)
(लेकिन यह बिल्कुल वही काम करेगाmknod(S_FIFO)
)।