हां, यह समतुल्य है, लेकिन जाहिर है कि अगर आप 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))।