Erlang 21

os




erlang

os

मॉड्यूल

ओएस

मॉड्यूल सारांश

ऑपरेटिंग सिस्टम-विशिष्ट फ़ंक्शन।

विवरण

इस मॉड्यूल में फ़ंक्शन ऑपरेटिंग सिस्टम-विशिष्ट हैं। इन कार्यों का लापरवाह उपयोग उन कार्यक्रमों में परिणाम करता है जो केवल एक विशिष्ट मंच पर चलेंगे। दूसरी ओर, सावधानीपूर्वक उपयोग के साथ, ये कार्य अधिकांश प्लेटफार्मों पर चलने के लिए एक कार्यक्रम को सक्षम करने में मदद कर सकते हैं।

ध्यान दें

फ़ाइल संचालन को नल वर्ण (पूर्णांक मान शून्य) वाले फ़ाइलनाम को स्वीकार करने के लिए उपयोग किया जाता है। इसके कारण नाम को काट दिया गया और कुछ मामलों में आदिम संचालन के तर्क को मिलाया गया। फ़ाइल नाम के अंदर अशक्त वर्णों वाले फ़ाइलनाम अब अस्वीकार कर दिए गए हैं और इससे आदिम फ़ाइल कार्रवाई विफल हो जाएगी।

इसके अलावा, पर्यावरण चर संचालन शून्य वर्णों (पूर्णांक मान शून्य) वाले पर्यावरण चर के नाम और मूल्यों को स्वीकार करने के लिए उपयोग किया जाता है। इससे गलत तरीके से गलत परिणाम देने के लिए ऑपरेशन किए गए। पर्यावरण चर नाम और मूल्य नाम या मूल्य के अंदर अशक्त वर्णों को अब अस्वीकार कर दिया गया है और इससे पर्यावरण चर संचालन विफल हो जाएगा।

जानकारी का प्रकार

env_var_name() = nonempty_string()

file:native_name_encoding() का उपयोग करके पर्यावरण चर नामों के लिए विशिष्ट OS पर मान्य वर्ण युक्त स्ट्रिंग file:native_name_encoding() एन्कोडिंग। ध्यान दें कि विशेष रूप से अशक्त वर्ण (पूर्णांक मूल्य शून्य) और $= वर्णों की अनुमति नहीं है। हालाँकि, ध्यान दें कि आवश्यक रूप से सभी अमान्य वर्णों के कारण प्राइमिटिव ऑपरेशन विफल हो जाएंगे, लेकिन इसके बजाय अमान्य परिणाम उत्पन्न हो सकते हैं।

env_var_value() = string()

file:native_name_encoding() का उपयोग करके पर्यावरण चर मूल्यों के लिए विशिष्ट OS पर मान्य वर्ण युक्त स्ट्रिंग file:native_name_encoding() एन्कोडिंग। ध्यान दें कि विशेष रूप से अशक्त वर्ण (पूर्णांक मूल्य शून्य) की अनुमति नहीं है। हालाँकि, ध्यान दें कि आवश्यक रूप से सभी अमान्य वर्णों के कारण प्राइमिटिव ऑपरेशन विफल हो जाएंगे, लेकिन इसके बजाय अमान्य परिणाम उत्पन्न हो सकते हैं।

env_var_name_value() = nonempty_string()

यह मानते हुए कि पर्यावरण चर को सही तरीके से सेट किया गया है, एक स्ट्रिंग जिसमें पर्यावरण चर नामों और मूल्यों के लिए विशिष्ट ओएस पर मान्य वर्ण हैं जो file:native_name_encoding() का उपयोग कर रहे file:native_name_encoding() एन्कोडिंग। स्ट्रिंग में दिखाई देने वाले पहले $= वर्ण पर्यावरण चर मान (दाईं ओर) से पर्यावरण चर नाम (बाईं ओर) को अलग करते हैं।

os_command() = atom() | io_lib:chars()

सभी वर्णों को file:native_name_encoding() का उपयोग करके विशिष्ट OS पर मान्य वर्ण होना चाहिए file:native_name_encoding() एन्कोडिंग। ध्यान दें कि विशेष रूप से अशक्त वर्ण (पूर्णांक मूल्य शून्य) की अनुमति नहीं है। हालांकि, ध्यान दें कि सभी अमान्य वर्ण जरूरी नहीं कि os:cmd/1 का कारण os:cmd/1 विफल, लेकिन इसके बजाय अमान्य परिणाम उत्पन्न कर सकते हैं।

os_command_opts() = #{max_size => integer() >= 0 | infinity}

os:cmd/2 लिए विकल्प os:cmd/2

max_size

os:cmd द्वारा लौटाए गए डेटा का अधिकतम आकार os:cmd कॉल। अधिक विवरण के लिए os:cmd/2 प्रलेखन देखें।

निर्यात

cmd (कमांड) -> स्ट्रिंग ()
cmd (कमांड, विकल्प) -> स्ट्रिंग ()

प्रकार

लक्ष्य OS के कमांड शेल में Command निष्पादित करता है, Command के मानक आउटपुट को कैप्चर करता है, और इस परिणाम को एक स्ट्रिंग के रूप में लौटाता है।

चेतावनी

पिछला कार्यान्वयन सभी वर्णों को अनुमति देने के लिए उपयोग किया जाता था जब तक कि वे पूर्णांक मान शून्य से अधिक या उसके बराबर थे। यह कभी-कभी अशक्त परिणामों की ओर ले जाता है क्योंकि अशक्त वर्ण (पूर्णांक मान शून्य) अक्सर स्ट्रिंग समाप्ति के रूप में व्याख्या किए जाते हैं। वर्तमान कार्यान्वयन इन्हें अस्वीकार करता है।

उदाहरण:

LsOut = os:cmd("ls"), % on unix platform
DirOut = os:cmd("dir"), % on Win32 platform

ध्यान दें कि कुछ मामलों में, एक कमांड का मानक आउटपुट जब किसी अन्य प्रोग्राम से बुलाया जाता है (उदाहरण के लिए, os:cmd/1 ) ओएस कमांड शेल से सीधे कॉल किए जाने पर कमांड के मानक आउटपुट की तुलना में भिन्न हो सकता है।

os:cmd/2 को कर्नेल-5.5 (OTP-20.2.1) में जोड़ा गया था। os:cmd के व्यवहार को नियंत्रित करने के लिए दूसरे तर्क के रूप में एक विकल्प नक्शा पास करना संभव बनाता है। संभावित विकल्प हैं:

max_size

os:cmd द्वारा लौटाए गए डेटा का अधिकतम आकार os:cmd कॉल। यह विकल्प एक सुरक्षा सुविधा है जिसका उपयोग तब किया जाना चाहिए जब निष्पादित कमांड एक बहुत बड़ी, संभवतः अनंत परिणाम दे सकती है।

> os:cmd("cat /dev/zero", #{ max_size => 20 }).
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
find_executable (नाम) -> फ़ाइल नाम | असत्य
find_executable (नाम, पथ) -> फ़ाइल नाम | असत्य

प्रकार

ये दोनों फ़ंक्शन एक निष्पादन योग्य प्रोग्राम को देखते हैं, निर्दिष्ट नाम और एक खोज पथ के साथ, उसी तरह अंतर्निहित ओएस के रूप में। find_executable/1 वर्तमान निष्पादन पथ का उपयोग करता है (अर्थात, यूनिक्स और विंडोज पर पर्यावरण चर PATH )।

Path , यदि निर्दिष्ट किया गया है, तो ओएस पर निष्पादन पथ के सिंटैक्स के अनुरूप है। निष्पादन योग्य प्रोग्राम का पूर्ण फ़ाइल नाम लौटाता है, या यदि प्रोग्राम नहीं मिला है तो false है।

getenv () -> [ env_var_name_value() ]

सभी पर्यावरण चर की एक सूची देता है। प्रत्येक पर्यावरण चर को "VarName=Value" प्रारूप पर एक एकल स्ट्रिंग के रूप में व्यक्त किया जाता है, जहां चर नाम चर का नाम है और इसके मूल्य का मान है।

यदि यूनिकोड फ़ाइल नाम एन्कोडिंग प्रभाव में है ( erl manual page ), स्ट्रिंग्स में कोडपॉइंट्स> 255 के साथ वर्ण हो सकते हैं।

getenv (VarName) -> मूल्य | असत्य

प्रकार

यदि पर्यावरण चर अपरिभाषित है, तो पर्यावरण चर VarName , या false का Value लौटाता है।

यदि यूनिकोड फ़ाइल नाम एन्कोडिंग प्रभाव में है ( erl manual page ), स्ट्रिंग्स VarName और Value कोडपॉइंट्स> 255 के साथ वर्ण हो सकते हैं।

getenv (VarName, DefaultValue) -> मान

प्रकार

अगर पर्यावरण चर अपरिभाषित है, तो पर्यावरण चर VarName , या DefaultValue का Value लौटाता है।

यदि यूनिकोड फ़ाइल नाम एन्कोडिंग प्रभाव में है ( erl manual page ), स्ट्रिंग्स VarName और Value कोडपॉइंट्स> 255 के साथ वर्ण हो सकते हैं।

getpid () -> मान

प्रकार

ओएस वातावरण द्वारा सबसे अधिक उपयोग किए जाने वाले प्रारूप में वर्तमान एरलंग एमुलेटर की प्रक्रिया पहचानकर्ता को लौटाता है। एक प्रक्रिया के लिए (आमतौर पर) संख्यात्मक पहचानकर्ता युक्त स्ट्रिंग के रूप में Value लौटाता है। यूनिक्स पर, यह आमतौर पर getpid() सिस्टम कॉल का रिटर्न मूल्य है। Windows पर, GetCurrentProcessId() सिस्टम कॉल द्वारा लौटाए गए प्रोसेस आईडी का उपयोग किया जाता है।

पुटनव (वरनेम, मूल्य) -> सच

प्रकार

पर्यावरण चर VarName लिए एक नया Value सेट करता है।

यदि यूनिकोड फ़ाइल नाम एन्कोडिंग प्रभाव में है ( erl manual page ), स्ट्रिंग्स VarName और Value कोडपॉइंट्स> 255 के साथ वर्ण हो सकते हैं।

यूनिक्स प्लेटफार्मों पर, यूटीएफ -8 एन्कोडिंग का उपयोग करके वातावरण सेट किया जाता है यदि यूनिकोड फ़ाइल नाम अनुवाद प्रभाव में है। विंडोज पर, पर्यावरण विस्तृत वर्ण इंटरफेस का उपयोग करके सेट किया गया है।

ध्यान दें

VarName को $= वर्ण सम्‍मिलित करने की अनुमति नहीं है। पिछले कार्यान्वयन का उपयोग केवल $= वर्ण को करने के लिए किया गया था जिसके माध्यम से चुपचाप गलत परिणाम हुए। वर्तमान कार्यान्वयन इसके बजाय एक badarg अपवाद को फेंक देगा।

set_signal (सिग्नल, विकल्प) -> ठीक है

प्रकार

OS संकेतों को सक्षम या अक्षम करता है।

प्रत्येक संकेत मेरे द्वारा निम्न विकल्पों में से एक पर सेट किया गया है:

ignore
इस संकेत को नजरअंदाज कर दिया जाएगा।
default
यह सिग्नल ऑपरेटिंग सिस्टम के लिए डिफ़ॉल्ट सिग्नल हैंडलर का उपयोग करेगा।
handle
यह संकेत erl_signal_server तब सूचित erl_signal_server जब यह Erlang रनटाइम सिस्टम द्वारा प्राप्त किया जाता है।
system_time () -> पूर्णांक ()

native time unit में वर्तमान OS system time लौटाता native

ध्यान दें

यह समय एक नीरस रूप से बढ़ता समय नहीं है।

system_time (इकाई) -> पूर्णांक ()

प्रकार

तर्क के रूप में पारित Unit में परिवर्तित वर्तमान OS system time लौटाता है।

os:system_time(Unit) कॉलिंग os:system_time(Unit) erlang:convert_time_unit बराबर है erlang:convert_time_unit ( os:system_time() , native, Unit)

ध्यान दें

यह समय एक नीरस रूप से बढ़ता समय नहीं है।

टाइमस्टैम्प () -> टाइमस्टैम्प

प्रकार

टाइमस्टैम्प = {मेगासेक, सेक, माइक्रोसेकस}

वर्तमान OS system time को erlang:timestamp/0 के समान प्रारूप में लौटाता है। calendar:now_to_universal_time/1 उपयोग फंक्शन calendar:now_to_universal_time/1 साथ किया जा सकता है calendar:now_to_universal_time/1 या calendar:now_to_local_time/1 कैलेंडर समय पाने के लिए। कैलेंडर फ़ंक्शन का उपयोग करते हुए, इस फ़ंक्शन से वापसी ट्यूपल के MicroSecs भाग के साथ, आप उच्च रिज़ॉल्यूशन में समय टिकटों को लॉग करने की अनुमति देता है और बाकी ओएस में समय के साथ संगत होता है।

कोड का एक प्रारूप "डीडी सोम YYYY HH: MM: SS.mmmmmm" प्रारूप में एक स्ट्रिंग का उदाहरण, जहां डीडी महीने का दिन है, सोम शाब्दिक महीने का नाम है, YYYY वर्ष है, HH: MM: SS समय है, और mmmmmm छह पदों पर माइक्रोसेकंड है:

-module(print_time).
-export([format_utc_timestamp/0]).
format_utc_timestamp() ->
    TS = {_,_,Micro} = os:timestamp(),
    {{Year,Month,Day},{Hour,Minute,Second}} =
calendar:now_to_universal_time(TS),
    Mstr = element(Month,{"Jan","Feb","Mar","Apr","May","Jun","Jul",
    "Aug","Sep","Oct","Nov","Dec"}),
    io_lib:format("~2w ~s ~4w ~2w:~2..0w:~2..0w.~6..0w",
    [Day,Mstr,Year,Hour,Minute,Second,Micro]).

इस मॉड्यूल का उपयोग निम्नानुसार किया जा सकता है:

1> io:format("~s~n",[print_time:format_utc_timestamp()]).
29 Apr 2009  9:55:30.051711

OS सिस्टम का समय os:system_time() और system_time/1 द्वारा भी os:system_time() जा सकता है।

perf_counter () -> काउंटर

प्रकार

perf_counter time unit में वर्तमान प्रदर्शन काउंटर मान perf_counter । यह एक अत्यधिक अनुकूलित कॉल है जो संभव नहीं है।

perf_counter (यूनिट) -> पूर्णांक ()

प्रकार

एक प्रदर्शन काउंटर लौटाता है जिसे बहुत तेज़ और उच्च रिज़ॉल्यूशन टाइमस्टैम्प के रूप में उपयोग किया जा सकता है। यह काउंटर सीधे हार्डवेयर या ऑपरेटिंग सिस्टम से समान गारंटी के साथ पढ़ा जाता है। इसका मतलब है कि फ़ंक्शन के लिए लगातार दो कॉल मोनोटोनिक होने की गारंटी नहीं है, हालांकि यह सबसे अधिक संभावना है। प्रदर्शन काउंटर को तर्क के रूप में पारित प्रस्ताव में परिवर्तित किया जाएगा।

1> T1 = os:perf_counter(1000),receive after 10000 -> ok end,T2 = os:perf_counter(1000).
176525861
2> T2 - T1.
10004
प्रकार () -> {ऑसफ़ैमिली, ऑसमेन}

प्रकार

Osfamily और, कुछ मामलों में, वर्तमान OS का Osname है।

Unix पर, Osname का मान वैसा ही है जैसा कि uname -s रिटर्न, लेकिन कम मामले में। उदाहरण के लिए, सोलारिस 1 और 2 पर, यह sunos

Windows पर, Osname nt

ध्यान दें

इस फ़ंक्शन का उपयोग करने से पहले दो बार सोचें। यदि आप पोर्टेबल तरीके से फ़ाइल नाम का निरीक्षण या निर्माण करना चाहते हैं, तो मॉड्यूल filename उपयोग करें। परमाणु Osname पर मिलान से बचें।

unsetenv (वरनेम) -> सच

प्रकार

पर्यावरण चर VarName हटाता है।

यदि यूनिकोड फ़ाइल नाम एन्कोडिंग प्रभाव में है ( erl manual page ), स्ट्रिंग VarName साथ वर्ण हो सकते हैं - 255।

version () -> VersionString | {प्रमुख, लघु, विमोचन}

प्रकार

OS संस्करण लौटाता है। अधिकांश सिस्टम पर, यह फ़ंक्शन एक टपल लौटाता है, लेकिन एक स्ट्रिंग इसके बजाय लौटा दी जाती है यदि सिस्टम में ऐसे संस्करण हैं जिन्हें तीन संख्याओं के रूप में व्यक्त नहीं किया जा सकता है।

ध्यान दें

इस फ़ंक्शन का उपयोग करने से पहले दो बार सोचें। यदि आपको अभी भी इसका उपयोग करने की आवश्यकता है, तो हमेशा call os:type()