ദ്രുത ഉത്തരം: Linux-ൽ stdout ഉം stderr ഉം എന്താണ്?

കമാൻഡിൽ നിന്ന് ഷെല്ലിലേക്കുള്ള ടെക്സ്റ്റ് ഔട്ട്പുട്ട് stdout (സ്റ്റാൻഡേർഡ് ഔട്ട്) സ്ട്രീം വഴിയാണ് നൽകുന്നത്. കമാൻഡിൽ നിന്നുള്ള പിശക് സന്ദേശങ്ങൾ stderr (സ്റ്റാൻഡേർഡ് പിശക്) സ്ട്രീം വഴി അയയ്ക്കുന്നു.

എന്താണ് stdout ഉം stderr ഉം?

കമ്പ്യൂട്ടർ പ്രോഗ്രാമിംഗിൽ, ഒരു കമ്പ്യൂട്ടർ പ്രോഗ്രാമും അതിൻ്റെ നിർവ്വഹണം ആരംഭിക്കുമ്പോൾ പരിസ്ഥിതിയും തമ്മിലുള്ള പരസ്പരബന്ധിതമായ ഇൻപുട്ട്, ഔട്ട്പുട്ട് ആശയവിനിമയ ചാനലുകളാണ് സ്റ്റാൻഡേർഡ് സ്ട്രീമുകൾ. മൂന്ന് ഇൻപുട്ട്/ഔട്ട്പുട്ട് (I/O) കണക്ഷനുകളെ വിളിക്കുന്നു സ്റ്റാൻഡേർഡ് ഇൻപുട്ട് (stdin), സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ട് (stdout), സ്റ്റാൻഡേർഡ് പിശക് (stderr).

Linux-ലെ stdout എന്താണ്?

സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ട്, ചിലപ്പോൾ ചുരുക്കിയ stdout, സൂചിപ്പിക്കുന്നു കമാൻഡ് ലൈൻ പ്രോഗ്രാമുകൾ നിർമ്മിക്കുന്ന ഡാറ്റയുടെ സ്റ്റാൻഡേർഡ് സ്ട്രീമുകളിലേക്ക് (അതായത്, എല്ലാ-ടെക്സ്റ്റ് മോഡ് പ്രോഗ്രാമുകളും) ലിനക്സിലും മറ്റ് യുണിക്സ് പോലുള്ള ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിലും. … ഈ സാഹചര്യത്തിൽ, നിലവിലെ ഡയറക്‌ടറിയിലെ എല്ലാ ഫയലുകളും ഒരു ആർഗ്യുമെന്റായി പരിഗണിക്കാൻ ഇത് ഫയൽ കമാൻഡിനോട് പറയുന്നു.

എന്താണ് stdout?

സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ട് എന്നും അറിയപ്പെടുന്ന Stdout ആണ് ഒരു പ്രോസസ്സിന് ഔട്ട്പുട്ട് എഴുതാൻ കഴിയുന്ന സ്ഥിരസ്ഥിതി ഫയൽ ഡിസ്ക്രിപ്റ്റർ. Linux, macOS X, BSD പോലുള്ള Unix-പോലുള്ള ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിൽ, POSIX സ്റ്റാൻഡേർഡ് പ്രകാരമാണ് stdout നിർവ്വചിച്ചിരിക്കുന്നത്. ഇതിൻ്റെ ഡിഫോൾട്ട് ഫയൽ ഡിസ്ക്രിപ്റ്റർ നമ്പർ 1 ആണ്. ടെർമിനലിൽ, ഉപയോക്താവിൻ്റെ സ്ക്രീനിലേക്ക് സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ട് ഡിഫോൾട്ട്.

Linux-ലെ stderr കമാൻഡ് എന്താണ്?

സ്റ്റാൻഡേർഡ് എറർ എന്നും അറിയപ്പെടുന്ന Stderr ആണ് ഒരു പ്രോസസ്സിന് പിശക് സന്ദേശങ്ങൾ എഴുതാൻ കഴിയുന്ന സ്ഥിരസ്ഥിതി ഫയൽ ഡിസ്ക്രിപ്റ്റർ. Linux, macOS X, BSD പോലുള്ള Unix-പോലുള്ള ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിൽ, POSIX സ്റ്റാൻഡേർഡ് പ്രകാരമാണ് stderr നിർവചിച്ചിരിക്കുന്നത്. … ടെർമിനലിൽ, ഉപയോക്താവിന്റെ സ്ക്രീനിൽ സാധാരണ പിശക് ഡിഫോൾട്ടായി മാറുന്നു.

ഞാൻ എങ്ങനെയാണ് stderr റീഡയറക്ട് ചെയ്യുക?

stderr-നെ റീഡയറക്‌ട് ചെയ്യുന്നതിന്, നിങ്ങൾക്ക് കുറച്ച് ചോയ്‌സുകൾ ഉണ്ട്:

  1. stdout ഒരു ഫയലിലേക്കും stderr മറ്റൊരു ഫയലിലേക്കും റീഡയറക്‌ട് ചെയ്യുക: command > out 2>error.
  2. stdout ഒരു ഫയലിലേക്ക് റീഡയറക്‌ട് ചെയ്യുക ( >out ), തുടർന്ന് stderr stdout ലേക്ക് റീഡയറക്‌ട് ചെയ്യുക ( 2>&1 ): command >out 2>&1.

stdout-ൽ stderr ഉൾപ്പെടുമോ?

എന്റെ ധാരണ ശരിയാണെങ്കിൽ, പ്രോസസിൽ ഒരു ടാസ്‌ക് പ്രവർത്തിപ്പിക്കുന്നതിനുള്ള അഭ്യർത്ഥനകളിലേക്ക് ഒരു പ്രോഗ്രാം എഴുതുന്ന ഫയലാണ് stdin, stdout എന്നത് കേർണൽ അതിന്റെ ഔട്ട്‌പുട്ട് എഴുതുകയും അതിൽ നിന്ന് വിവരങ്ങൾ ആക്‌സസ്സ് അഭ്യർത്ഥിക്കുന്ന പ്രക്രിയയുമാണ്, കൂടാതെ എല്ലാ ഒഴിവാക്കലുകളും നൽകിയ ഫയലാണ് stderr.

Linux-ൽ stderr എങ്ങനെ കണ്ടെത്താം?

സാധാരണയായി, STDOUT, STDERR എന്നിവ നിങ്ങളുടെ ടെർമിനലിലേക്കുള്ള ഔട്ട്പുട്ടാണ്. എന്നാൽ ഒന്നിനെയും രണ്ടിനെയും റീഡയറക്‌ട് ചെയ്യാൻ സാധിക്കും. ഉദാഹരണത്തിന്, ഒരു CGI സ്ക്രിപ്റ്റ് വഴി STDERR-ലേക്ക് അയച്ച ഡാറ്റ സാധാരണയായി വെബ് സെർവറിന്റെ കോൺഫിഗറേഷനിൽ വ്യക്തമാക്കിയ ലോഗ് ഫയലിൽ അവസാനിക്കും. ഒരു ലിനക്സ് സിസ്റ്റത്തിൽ STDERR-നെ കുറിച്ചുള്ള വിവരങ്ങൾ ഒരു പ്രോഗ്രാമിന് ലഭിക്കുന്നത് സാധ്യമാണ്.

Linux-ന്റെ ഉപയോഗം എന്താണ്?

ദി & കമാൻഡ് പശ്ചാത്തലത്തിൽ പ്രവർത്തിപ്പിക്കുന്നു. മാൻ ബാഷിൽ നിന്ന് : കൺട്രോൾ ഓപ്പറേറ്റർ & ഒരു കമാൻഡ് അവസാനിപ്പിക്കുകയാണെങ്കിൽ, ഷെൽ ഒരു സബ്ഷെല്ലിൽ പശ്ചാത്തലത്തിലുള്ള കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നു. കമാൻഡ് പൂർത്തിയാകുന്നതുവരെ ഷെൽ കാത്തിരിക്കുന്നില്ല, റിട്ടേൺ സ്റ്റാറ്റസ് 0 ആണ്.

Linux-ൽ stdout എവിടെ പോകുന്നു?

സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ട്, പ്രക്രിയ സൃഷ്ടിക്കുന്ന സമയത്ത് സൃഷ്ടിച്ചത് പോലെ, കൺസോളിലേക്കോ നിങ്ങളുടെ ടെർമിനലിലേക്കോ ഒരു എക്സ് ടെർമിനലിലേക്കോ പോകുന്നു. ഔട്ട്‌പുട്ട് എവിടെയാണ് അയയ്‌ക്കുന്നത് എന്നത് പ്രക്രിയയുടെ ഉത്ഭവത്തെ ആശ്രയിച്ചിരിക്കുന്നു. സ്ഥിരസ്ഥിതിയായി, ഞങ്ങളുടെ സ്റ്റാൻഡേർഡ് ഔട്ട്‌പുട്ടിലേക്ക് അതായത് ഞങ്ങളുടെ കൺസോൾ അല്ലെങ്കിൽ ടെർമിനൽ സ്‌ക്രീനിലേക്ക് ഫയൽ [con]കാറ്റനേറ്റ് ചെയ്യും.

printf stdout-ലേക്ക് എഴുതുമോ?

ഏതെങ്കിലും കോൾ printf ഉദ്ദേശിക്കുന്ന stdout-ലേക്ക് പ്രിൻ്റ് ചെയ്യുക, fprint-ലേക്ക് വിളിക്കുമ്പോൾ അച്ചടിക്കുക നിർദ്ദിഷ്ട സ്ട്രീമിലേക്ക്. ൽ ഉദാഹരണം നിങ്ങൾ നൽകുന്നു, രണ്ടാമത്തെ ഫംഗ്ഷൻ കോൾ ചെയ്യും അച്ചടിക്കുക stderr ലേക്ക്. നിങ്ങൾ ഒരു ശൂന്യമായ സ്‌ട്രിംഗ് പ്രിൻ്റ് ചെയ്യുന്നതിനാൽ, രണ്ട് സ്‌ട്രീമുകളിലും നിങ്ങൾ കാര്യമായി ഒന്നും ചെയ്യില്ല, അതിനാൽ ശ്രദ്ധിക്കേണ്ട ഒന്നും സംഭവിക്കുന്നത് നിങ്ങൾ കാണില്ല.

നിങ്ങൾക്ക് stdout-ലേക്ക് എഴുതാമോ?

stdout ലേക്ക് ഔട്ട്‌പുട്ട് അയയ്‌ക്കാൻ നിങ്ങൾ പ്രതിജ്ഞാബദ്ധമാകുമ്പോൾ, ആ ഔട്ട്‌പുട്ട് എവിടേക്കാണ് പോകേണ്ടതെന്ന് തീരുമാനിക്കാൻ നിങ്ങൾ അടിസ്ഥാനപരമായി അത് ഉപയോക്താവിന് വിട്ടുകൊടുക്കുകയാണ്. നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ printf(…) (അല്ലെങ്കിൽ തത്തുല്യമായ fprintf(stdout, …) ), നിങ്ങൾ ഔട്ട്‌പുട്ട് stdout ലേക്ക് അയയ്‌ക്കുന്നു, എന്നാൽ അത് യഥാർത്ഥത്തിൽ എവിടെയാണ് അവസാനിക്കുന്നത് എന്നത് ഞാൻ നിങ്ങളുടെ പ്രോഗ്രാം എങ്ങനെ അഭ്യർത്ഥിക്കുന്നു എന്നതിനെ ആശ്രയിച്ചിരിക്കും.

stdout സംരക്ഷിച്ചിട്ടുണ്ടോ?

stdout വെറും ഒരു ഫയൽ ഹാൻഡിൽ സ്ഥിരസ്ഥിതിയായി കൺസോളുമായി ബന്ധിപ്പിച്ചിട്ടുണ്ടെങ്കിലും റീഡയറക്‌ട് ചെയ്യാവുന്നതാണ്.

ഈ പോസ്റ്റ് ഇഷ്ടമാണോ? നിങ്ങളുടെ ചങ്ങാതിമാരുമായി പങ്കിടുക:
ഒഎസ് ടുഡേ