লিনাক্সের "টাইম.এইচ" তে "টাইমার_টি" সংজ্ঞায়িত করা হলেও ওএস এক্স নয়


11

আমি যখন কোনও সি উত্স কোড ফাইলগুলি পড়ছিলাম তখন আমি এই ঘোষণাটি পেয়েছি found (এই উত্স কোডটি লিনাক্স সিস্টেম প্রোগ্রামের জন্য লেখা হয়েছিল This এটি অত্যন্ত গুরুত্বপূর্ণ তথ্য)

#include <time.h>
#include <stdio.h>

static timer_t* _interval_timer;
...

প্রথমে, আমি 'টাইমার_টি' সম্পর্কে আরও জানতে চেয়েছি। সুতরাং আমি শিরোনাম সম্পর্কিত তথ্য পেতে 'টাইম। H' গগল করেছি। তবে, 'টাইমার_টি' সম্পর্কে কোনও শব্দ ছিল না, কেবলমাত্র 'টাইম_টি' সম্পর্কে উল্লেখ করা হয়েছিল।

কৌতূহলে, আমি অনুসন্ধান করেছি এবং আমার 'ম্যাক' কম্পিউটারে 'টাইম। H' সি স্ট্যান্ডার্ড লাইব্রেরি ফাইলটি (যেমন আপনি জানেন, / ইউএসআর / ফোল্ডার স্টোরগুলি সি স্ট্যান্ডার্ড লাইব্রেরী ফাইলগুলি অন্তর্ভুক্ত রয়েছে)) তবে এই ফাইলটি পূর্ববর্তী গুগল করা ফাইলটির সাথে একই ছিল।

অবশেষে, আমি ভার্চুয়াল মেশিন ব্যবহার করে আমার লিনাক্স ওএস (উবুন্টু) চালু করেছি এবং লিনাক্স সি স্ট্যান্ডার্ড লাইব্রেরি ফোল্ডারে (টাইম.এইচ) খুলি (ফোল্ডারের পথটি ওএসএক্সের মতো)। যেমনটি আমি প্রত্যাশা করেছিলাম, লিনাক্সে 'টাইম। হ' ফাইলটির টাইমার_টি ঘোষণা আছে।

আমি কোড লাইন যুক্ত করেছি যা নীচে 'টাইমার_টি' টাইপ ঘোষণা করে।

#if !defined __timer_t_defined && \
((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t)
# define __timer_t_defined      1

# include <bits/types.h>

/* Timer ID returned by `timer_create'.  */
typedef __timer_t timer_t;

আমার প্রশ্ন এই।

  1. কেন 'টাইমার_টি' কেবলমাত্র লিনাক্স সি স্ট্যান্ডার্ড লাইব্রেরিতে সংজ্ঞায়িত করা হয়?

  2. এই পরিস্থিতি কি সাধারণত ঘটে? মানে, বিভিন্ন ওএসের মধ্যে কোনও আলাদাভাবে সংজ্ঞায়িত ফাংশন বা বৈশিষ্ট্য রয়েছে কি?


প্রকারটি কেবল timer_t"লিনাক্সে সংজ্ঞায়িত করা হয় না", যেমন উইন্ডোজ / সাইগউইনে এটি সংজ্ঞায়িতও হয়। শিরোলেখ ফাইলগুলির মধ্যে সংজ্ঞা অনুসারে (লিনাক্স এবং সিগউইন) এটি একটি পসিক্স মানক প্রকার বলে মনে হয়। (এর বাইরে কিছু প্ল্যাটফর্ম মানদণ্ডের সাথে সঙ্গতিপূর্ণ নাও হতে পারে আমি যেমনটি তৈরি করেছিলাম তেমন কোনও নির্দিষ্ট পরিস্থিতিই দেখতে পাই না "সাধারণভাবে ঘটে")। ভাষা পাঠাগারগুলির পার্থক্য সম্পর্কে আপনার সাধারণ প্রশ্ন ডাব্লুআরটি; এটি নির্ভর করে যে বিক্রেতারা মানদণ্ডগুলি মেনে চলেন বা কোন সংস্করণগুলি তারা মেনে চলেন।
জানিস


@ মার্কপ্লটনিক: এটি একটি উত্তর
অরবিট

টুইটারে আমি এটি সরিয়েছি।
প্লটনিক

উত্তর:


11

ইউনিক্স এবং সিটির একটি আন্তঃবাহিত ইতিহাস রয়েছে, কারণ এগুলি উভয়ই নিউ জার্সির বেল ল্যাবগুলিতে একই সময়ে বিকশিত হয়েছিল এবং সি এর অন্যতম প্রধান উদ্দেশ্য ছিল ইউনিক্সকে একটি উচ্চ স্তরের, আর্কিটেকচার স্বাধীন, বহনযোগ্য ভাষা ব্যবহার করে প্রয়োগ করা। তবে, 1983 অবধি কোনও সরকারী মানীয়করণ হয়নি was পসিক্স , "পোর্টেবল অপারেটিং সিস্টেম ইন্টারফেস" একটি আইইইই অপারেটিং সিস্টেম স্ট্যান্ডার্ড যা "ইউনিক্স ওয়ার্স" এর সময় থেকে শুরু হয়েছিল । এটি তখন থেকেই বিকশিত হয়ে আসছে এবং এখন এই জাতীয় মানটি সবচেয়ে বহুল প্রয়োগ। ওএসএক্স আনুষ্ঠানিকভাবে পসিক্স অনুগত, এবং আনুষ্ঠানিকভাবে লিনাক্স হ'ল - আনুষ্ঠানিকভাবে সম্মতিতে যুক্ত লজিস্টিক এবং ব্যয় রয়েছে যা লিনাক্স ডিস্ট্রোস অংশ নেয় না।

পসিক্স যে বিষয়টিতে ফোকাস করেছে সেগুলির বেশিরভাগটি আইএসও সি টাইম এইচ এর অংশ নয় এমন বিষয়গুলির বিবরণ, তবে আইএসও সংস্করণে timer_tএটি ব্যবহার করা টাইপ বা কোনও ফাংশন অন্তর্ভুক্ত নয়। এগুলি পসিক্স এক্সটেনশান থেকে , সুতরাং লিনাক্স শিরোনামে এই উল্লেখটি:

#if !defined __timer_t_defined && \
((defined _TIME_H && defined __USE_POSIX199309)

এটি __USE_POSIX199309হ'ল একটি অভ্যন্তরীণ _POSIX_C_SOURCE >= 199309Lগ্লিব্যাক প্রতীক যা বৈশিষ্ট্যগুলিতে সেট করা হয় when যখন , এর অর্থ হল পসআইএক্স.১ বি সমর্থন করা হবে ( ফিচার_টেষ্ট_ম্যাক্রোস ম্যানপেজ দেখুন )। এটিও সমর্থিত _XOPEN_SOURCE >= 600

বিভিন্ন ওএসের মধ্যে কোনও আলাদাভাবে সংজ্ঞায়িত ফাংশন বা বৈশিষ্ট্য রয়েছে?

আমি মনে করি সি-এর বিষয়ে, পসিক্স সিস্টেমগুলির মধ্যে, এটি এড়ানোর চেষ্টা করা হচ্ছে, তবে তা ঘটে। কিছু জিএনইউ এক্সটেনশান রয়েছে (উদাঃ sterror_r()) যাদের পোসিক্স অংশগুলির সাথে বেমানান স্বাক্ষর রয়েছে। সম্ভবত পসিক্স যখন এক্সটেনশানটি গ্রহণ করে তবে এটি সংশোধন করে, অন্যথায় এগুলি জিএনইউ দ্বারা সপ্নে দেখে নেওয়া বিকল্পগুলি - আপনি একটি উপযুক্ত ব্যবহার করে একে অপরের বিকল্প বেছে নিতে পারেন #define


খুব সুন্দর! কি ধরণের ব্যাখ্যা!
ক্যাসমিয়া

1
পক্সিক্স এবং সি স্ট্যান্ডার্ডগুলি আংশিকভাবে সি ইউনিক্স থেকে সি আলাদা করার বিষয়ে ছিল - দু'জনের এত ঘনিষ্ঠভাবে আবদ্ধ ছিল যে কখনও কখনও পরিষ্কার হয়নি যে কোথায় গেছে what
টেপিক

2

timer_tPOSIX এ টাইমার_ এপিআই দ্বারা ব্যবহৃত হয়, যেমন timer_create()। পসিক্সের ইউনিক্স 03 সংস্করণে সেগুলি পসিক্সের একটি alচ্ছিক অংশ, এবং ম্যাকস এটি প্রয়োগ করে না। লিনাক্স এবং সোলারিস এবং সম্ভবত কিছু অন্যান্য ইউএন * জেস করেছে।

সুতরাং আপনি যে কোডটি দেখছিলেন তাতে লিনাক্স এবং সোলারিসে কাজ করা হতে পারে তবে ম্যাকোজে কাজ করবে না, যদি না ভবিষ্যতে অ্যাপল টাইমার এপিআই প্রয়োগ না করে। (এগুলি পসিক্স স্পেসিফিকেশনের বর্তমান সংস্করণের অংশ, সুতরাং অ্যাপল স্পেসিফিকেশনটির সংস্করণ 3 এর পরিবর্তে সংস্করণ 4-এর সাথে মানিয়ে নিতে চাইলে এটি করতে হবে))

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