ইউনিক্স ডোমেন সকেটের জন্য কোনও পাথ সর্বাধিক ছাড়িয়েছে কিনা তা পরীক্ষা করুন


9

অপারেটিং সিস্টেমগুলি ইউনিক্স ডোমেন সকেটের পাথের দৈর্ঘ্যকে সীমাবদ্ধ করে। কোনও নির্দিষ্ট পথ সেই সীমাতে রয়েছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?

বা, অন্যভাবে বলতে গেলে, আমি কীভাবে লিনাক্স বা ম্যাক ওএস এক্স সিস্টেমে ইউনিক্স ডোমেন সকেটের পাথের সর্বাধিক অনুমোদিত দৈর্ঘ্যটি পরীক্ষা করতে পারি?

আমার ব্যবহারের ক্ষেত্রে এটি এসএসএইচ মাল্টিপ্লেক্সিংয়ের জন্য: যদি কন্ট্রোলপথটি দীর্ঘ হয় তবে এসএসএইচ মাল্টিপ্লেক্সিং কার্যকর হবে না কারণ এটি একটি ইউনিক্স ডোমেন সকেট তৈরি করে। আমি আসলে কোনও এসএসএস সেশন শুরু না করেই ত্রুটি বার্তার সন্ধান না করে একটি বৈধ নিয়ন্ত্রণের পথটি পরীক্ষা করতে সক্ষম হতে চাই।

উত্তর:


8

লিনাক্সে কীভাবে আমি ইউনিক্স ডোমেন সকেটের পাথের সর্বাধিক অনুমোদিত দৈর্ঘ্য পরীক্ষা করতে পারি

লিনাক্সে, এই দৈর্ঘ্যটি সাধারণত 108 হিসাবে সংজ্ঞায়িত হয়।

এটি হেডার ফাইলে UNIX_PATH_MAXভেরিয়েবল দ্বারা সংজ্ঞায়িত করা হয়েছে /usr/include/linux/un.h:

cat /usr/include/linux/un.h | grep "define UNIX_PATH_MAX"

#define UNIX_PATH_MAX   108

আপনি এখানে আরও তথ্য পেতে পারেন:


ইউনিক্স সকেট পাথের ঠিকানাগুলি PATH_MAX এর চেয়ে বেশি সীমিত হওয়ার কোনও কারণ আছে কি?
সিএমসিডিগ্রাগনকাই

6

unixম্যান ওএস এক্সে, ম্যান পেজ অনুসারে :

UNIX-domain addresses are variable-length filesystem pathnames of at most
104 characters.  The include file <sys/un.h> defines this address:

       struct sockaddr_un {
               u_char  sun_len;
               u_char  sun_family;
               char    sun_path[104];
       };

এখানে এমন একটি প্রোগ্রাম রয়েছে যা লিনাক্স এবং ওএস এক্স উভয়ই সংকলন করে যা ইউনিক্স ডোমেন সকেটের সর্বাধিক দৈর্ঘ্যের আউটপুট দেয়।

#include <sys/un.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    struct sockaddr_un s;
    printf("%lu\n", sizeof(s.sun_path));
    return 0;
}

লিনাক্সে, এটি আউটপুট করে 108এবং ওএস এক্স-এ এটি আউটপুট দেয় 104

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.