Linus Torvalds : ऑपरेटींग सिस्टीम जगतामधील मवाळ क्रांतिकारक…!

Linus Torvalds

Linus Torvalds

लायनस टोर्व्हॅल्ड्स, असा जो याचा प्रचलीत उच्चार आहे तसा तो नाहीयं; तर लिनस तोरवाल्ड्स असा आहे.

कंप्युटर म्हणजे विंडोज. म्हणजे त्यावर तेच असते, दुसरे काही असूच शकत नाही हे सर्वसामान्य युझरचे ज्ञान. थोड्याफार शिकलेल्या विद्यार्थ्यासाठी मॅक ओ.एस.सुद्धा विंडोज सारखच काहीतर प्रकरण आहे, ते ठरावीक मशीनवर चालतं आणि अमेरीकेत वापरतात इतकचं तोडक ज्ञान. हे दोनही वगळून उरले ते नवशिके प्रोग्रॅमर आणि त्यांच्या आजूबाजूला अपवाद वगळता “आठशे खिडक्या नउशे दार” या गाण्याप्रमाणे विंडोजच पहायला मिळायची. त्यामुळे इंजीनीअरींग व डिप्लोमाच्या विद्यार्थ्यांना gcc हा कमांड फक्त imported पुस्तकाच्या झेरॉक्स कॉपी मध्ये दिसायचा व प्रोग्रॅमिंग टर्बो सी मध्येच चालायचे व अजुनही चालते आहे. युनिक्स आणी लिनक्स हे  डॆस्क्टॉप वर नसतात ही सुद्धा एक धारणा. त्यातुनही उरलेले ज्याना लिनक्स-युनिक्स माहीत आहे ते सर्व परदेशात. हि सर्व अवस्था फार पुर्वी नाही तर फक्त १०-१५ वर्षापुर्वीची.

विंडोज ची हि मक्तेदारी खऱ्या अर्थान मोडीत काढायला सुरवात केली ती लिनसनं. आपल्याकडे अल्पसंख्यांकांच राजकारण केलं जातं पण फिनलंड मधील अल्पसंख्यांक जमातीत १९६९ साली जन्माला आलेला हा अवलीया अमेरीकेमध्ये स्थलांतरीत होउन थेट बिल गेट्स व मायक्रोसॉफ्टच्या मक्तेदारी व डिजीटल भांडवलशाही साम्राज्याला भिडला. म्हणून मी क्रांतीकारक असा शब्द वापरला…!

आई व वडील दोघ सुद्धा पुरोगामी व उच्च-शिक्षीत. पण लिनस लहान असतांनाच आई-वडील वेगळे झाले व लिनस आईकडॆ वाढला. आजोबा प्रोफेसर असल्यामुळे पुढील शिक्षण सुरू झाले. सुखवस्तू असल्यामुळे ११ व्या वर्षीच घरी कंप्युटरचे आगमन झाले व बेसीक लॅंग्वेज शिकायला सुरवात केली. प्रोग्रॅमिंग व मॅथेमॅटीक्स चे जबरदस्त वेड. इतक की आजोबानी या तुन बाहेर पडावा म्हणून त्याला खेळाची सवय लावायचा प्रयत्न केला. तो प्रयोग फसला. सोशल होण्यासाठी प्रयत्न केले. ते सुद्धा फसले. शेवटचा उपाय म्हणून मैत्रीणीचा नाद लावायचा मार्ग सुद्धा अवलंबवला. पण या अवलियाने त्याला दाद दिली नाही. पैसे साठवून वयाच्या १७व्या वर्षी नवीन 128KB (MB अथवा GB नव्हे) RAM असलेले अद्यावत मशीन खरेदी केले…! १८ व्या वर्षी हेलसींकी विद्यापीठामध्ये प्रवेश घेउन लगेच C programming language च्या प्रेमात पडला व ३ वर्षाच्या कठोर परीश्रमानंतर ठरवले की ऑपरेटींग सिस्टीम लिहायची तर C language वापरायची.

१९९१ साली त्याने IBM मशीन विकत घेतले. ४ MB RAM. पण यावर असलेल्या MS-DOS ला तो वैतागला होता. म्हणून युनिक्स install करायची होती कारण त्याच्या कॉलेज मध्ये युनिक्स होती. पण युनिक्स प्रचंड महाग होती. त्या काळात जवळपास ५००० डॉलर…! म्हणून ती कल्पना त्याला सोडून द्यावी लागली. व त्याने त्याच्यासारखीच पण कमी क्षमतेची टॅननबॉन ने तयार केलेल्या मिनीक्स या ऑपरेटींग सिस्टीमचा विचार केला. युनिक्स शिकवण्यासाठी टॅननबॉन मिनीक्सचा वापर करायचा. पण त्यामध्ये खुप कमतरता होत्या. म्हणून लिनस ने तीचाही नाद सोडून दिला आणी युनिक्स व मिनीक्स प्रमाणेच स्वत:च ऑपरेटींग सिस्टीम लिहीण्याचा विचार त्याचा मनात सुरू झाला. पण त्या मधील अडचणी, धोके व कॉलेजची वाया जाणारी वर्षे याची त्याला पुर्णपणे जाणीव होती. फिनलंड मध्ये त्या काळी शिक्षण मोफत असायचे व डिग्री ४ वर्षातच पुर्ण केली पाहीजे असा नियम नव्हता. म्हणून त्याने सरळ ब्रेक घेतला. मंध्यंतरी आर्मी मध्ये एक वर्षे काम करून आला कारण तिकडॆ ती अनिवार्य प्रथा होती. १९९१ च्या आसपास मात्र त्याने ऑपरेटींग सिस्टीम वर काम करायला सुरवात केली.  त्यासाठी त्याने मिनीक्स वापरणाऱ्या युझर्स कडून नवीन  पण फुकट देण्याची वचन देणाऱ्या ऑपरेटींग सिस्टीम पासून कोणत्या प्रकारच्या अपेक्षा आहेत हे मागवून घेतले. हे काम जिकरीचे व धाडसाचे होते. म्हणून त्याने काही काळ स्वत:ला एकट्याला कोंडून घेतले व बेसीक व्हर्जन तयार केले. अर्थातच सर्व कोड स्क्रॅच पासून लिहीण्यासाठी त्याने C language चा वापर केला. त्याला त्याने bash shell असे नाव दिले. व बेधडक पणे सर्व सोर्स कोड पब्लीक युझ साठी ftp सर्व्हर वर टाकून दिला. व प्रतिक्रीया मागवल्या. नेटवर्क वर टाकण्यासाठी त्याच्याच एका मित्राने त्याला मोलाची मदत केली.

free-soft

लिनस ने या ऑपरेटींग सिस्टीम ला लिनक्स असे नाव देउन टाकायचा विचार केला. पण स्वत:च्या नावाचा आपण स्वत:च डांगोरा पिटत आहोत अशी भावना निर्माण झाल्याने त्याने नाव Freax असे ठेवले जे Free, freak आणी Minix पासून तयार केले होते. पण ज्या मित्राने ftp server वर लिनस चा सोर्स कोड टाकला होता त्या फोल्डर ला नाव लिनक्स ठेवले होते. शेवटी तेच राहीले…

Richard Stallman

Richard Stallman

नंतर रिचर्ड स्टॉलमन या पेशाने वकील असणाऱ्या व त्याच्या फ्री लायसेंन्स प्रमोट करणाऱ्या GPL under त्याने लिनक्स ऑपरेटींग सिस्टीम रिलीज केली. त्याने युझर्सना अभ्यास करायची, डाउनलोड करायची, मॉडीफाय करायची, एक्सटेंड करायची व प्रसार करण्याची सवलत देउन टाकली. असं फुकट काहीतरी मिळतय असे कळाल्यानंतर लोकांच्या त्यावर उड्या पडल्या तर नवल नव्हतच व लिनक्स चा प्रसार सुरू झाला.

linux-20-años

पाच वर्षात म्हणजे १९९७ पर्यंत ७० लाख installation झाली. अर्थातच प्रसिद्धीला शत्रू लगेच होतात तसे लिनस च्या बाबतीत सुद्धा झाले व टॅननबॉनच्या टिकेला सामोरे जावे लागले. कारण लिनक्स फ्री असल्या मुळे टॅननबॉन सैरभैर झाला.

linux-vs-vista_1024x768

१९९७ मध्ये मात्र लिनस ने त्याचा मुक्काम फिनलंड मधून सिलीकॉन व्हॅलीमध्ये हालवला आणि ट्रांसमेटा या कंपनीमध्ये रुजू झाला. अर्थातच नोकरी करता करता लिनक्स वरचे काम चालू ठेवणार अशी त्याने अट घातली होती व कंपनीने ती मान्य केली. सिलीकॉन व्हॅली मध्ये अर्थातच लिनस ची तुलना थेट बिल गेट्स बरोबर सुरू झाली. दोघे सुद्धा प्रोग्रॅमर. दोघांना सुद्धा चश्मा… दोघांची उंची एकच इतकेच काय ते साम्य. एक डिजीटल क्षेत्रामधीलअनभिक्षत साम्राज्यवादी तर दुसरा फ्री देणारा गरीब नोकरदार अशी टक्कर सुरू झाली.

Red Hat

Red Hat

१९९९ मध्ये मात्र त्याच्या १५ वर्षाच्या कष्टाला फळ मिळाले व रेड हॅट ने लिनक्स डिस्ट्रिब्युट करायला सुरवात केली व लिनक्स करोडपती झाला. त्या नंतर मात्र त्याने मागे वळून पाहीले नाही कारण नंतर Oracle, Intel, Corel या दिग्गज कंपन्यानी त्यांच्या हार्डवेअर वर लिनक्स पोर्ट करायला सुरवात केली. अर्थात इतके सर्व असूनही लोकांना ती फुकटच मिळत होती व अजूनही फुकट मिळते.

या सर्व घडामोडी होत असतांना, अब्जाधीश होण्याच्या अनेक संधी दारात असतांना सुद्धा लिनसने त्याच्या “आयुष्य हे आनंदाने जगण्यासाठी असते, अब्जाधीश होण्याकरीता नसते” या तत्वाला सोडले नाही. पण सध्या सुद्धा हा ४६ वर्षाचा उमदा तरूण Oregon मध्ये OSDL म्हणजेच Open Source Development Lab मध्ये काम करत असला तरी त्याला अनेक प्रतिष्ठेचे पुरस्कार मिळण्यापासून अलिप्त ठेउ शकला नाही. त्याची लिस्टची छोटी झलकच पहा  येथे

  • IEEE चा या वर्षीचा पायोनीयर पुरस्कार,
  • २०१२ साली इंटरनेट हॉल ऑफ फेम
  • २०१२ मध्ये नोबेलच्या दर्जाचा मेलिनीयम टेक्नॉलॉजी पुरस्कार
  • २००० साली टाइम मॅगेझीनचा “शतकातील १०० महत्वाच्या व्यक्तीं” च्या यादीत १७ वा क्रमांक
  • २००२ साली पुन्हा टाइमचा जगातील सर्वात प्रभावशाली व्यक्तींच्या यादीत नाव
  • २००६ साली गेल्या ६० वर्षातील क्रांतीकारीक हिरो…व असे अनेक पुरस्कार मिळाले.
  • १९९६ साली तर लघुग्रह शोधणाऱ्या शास्त्रज्ञाने त्या लगुग्रहाला लिनस असे नाव दिले कारण शास्त्रज्ञच लिनक्स ऑपरेटींग सिस्टीम ने प्रभावीत झाला होता.
  • लिनसच्या नावावर तर ३५ वेगवेगळी पेटंट्स उपलब्ध आहेत.

linus-torvalds-by-glenn1794-d4xkv55-644x320

क्रॅश होणाऱ्या ऑपरेटींग सिस्टीम तयार करून अब्जाधीश व्हायचे, साम्राज्य तयार करायचे, अनेक कंपन्या घशात घालायच्या व मक्तेदारी शाबूत ठेवायची या प्रचलीत व तथाकथित न्याय्य पद्धतीला आव्हान देउन ऑपरेटींग सिस्टीम तर चांगली तयार करायचीच  पण जगाच्या कल्याणाकरीता. विकायची नाही. श्रीमंत व्हायचे नाही. फुकट द्यायची. हे लिनसचे तत्व इतके प्रसिद्ध झाले की लिनस चा नियम (Linus’s Law) म्हणून मान्यता मिळाली. हा लॉ काय सांगतो की “Given enough eyeballs, all bugs are shallow”… ऑपरेटींग सिस्टीममध्ये खुप आत दडलेला बग एका प्रोग्रॅमरला सापडत नाही… पण बग सापडण्यासाठी सगळ्याना कामाला लावले तर बग शिल्लकच रहात नाही… म्हणुनच त्याने लिनक्स सर्वांसाठी फ्री उपलब्ध करून ठेवली…!

02.

पैसा मिळाला की दु:ख बरोबर येणार असे प्रत्येक म्हणतो पण प्रत्येक जण त्याच वाटेवर जातो. लिनस त्याला अपवाद ठरला. व आजतागायत त्याने तो धर्म पाळला. म्हणूनच तो सात्विक क्रांतीकारक…. सलाम…!

इतिहास कायम प्रेरणा देणारा असतो म्हणून हि पोस्ट तुमच्या सारख्याच लढवय्यांसाठी…

Switch_To_linux-346x154

Kernel : ऑपरेटींग सिस्टीम ची रहस्यमय व अद्भुत दुनिया…

Operating system structure[8]“मी OS च्या कर्नल वर काम केले आहे” अथवा “मी लिनक्स वर काम करतो”… किंवा “माझी आता लिनक्स वर मास्टरी झाली आहे” असे विनम्रपणे न सांगता अशा काही बढाया जर कोण मारत असेल तर लिनक्स च्या कर्नल चा सोर्स कोड जवळ पास ६० लाख लाइन्स चा आहे असे त्याला सांगा.

 

1-012शे-पाचशे लाइन्स चा C/C++ चा अथवा जावा चा प्रोग्रॅम लिहीणाऱ्या नवशिक्या प्रोग्रॅमरला आपण ज्या OS वर काम करतो त्याचे महाभारता मधील कृष्णाप्रमाणे हे लिनक्स कर्नलचे महाविशाल व अवाढव्य पण अदृश्य रुप माहीत असणे जरूरी आहे. म्हणूनच हि पोस्ट च्या कर्नल ची थोडीफार  ओळख करून देण्यासाठी….! खास लिनक्स लव्हर्स साठी…!

युनिक्स व युनिक्स सारख्याच म्हणजे लिनक्स ऑपरेटींग सिस्टीम चा जणू काही आत्मा म्हणजेच Kernel. Kernel हा शब्द शक्यतो Unix/Linux सारख्या ऑपरेटींग सिस्टीम बाबत वापरला जातो असा गैरसमज आहे. प्रत्येक ऑपरेटींग सिस्टीम साठी वेगळा kernel असतो. म्हणजेच अर्थातच Microsoft Windows सारख्या ऑपरेटींग सिस्टीमला सुद्धा kernel असतोच. अर्थात लिनक्स/युनिक्स च्या kernel प्रमाणे Microsoft Windows च्या kernel ला सुविधा नसल्यामुळे तसा गैरसमज आहे. कारण गमतीचा भाग म्हणजे फक्त kernel update/modify करण्याची सुविधा युनिक्स/लिनक्स kernel च्या बाबतीत आहे. तशी Microsoft Windows च्या kernel ला नाही.

kernel-shell1खरं तर kernel म्हणजे ऑपरेटींग सिस्टीमचा गाभा  पण अनेकवेळा  कर्नल म्हणजेच ऑपरेटींग सिस्टीम असे सुद्धा म्हणायला हरकत नाही. त्याच मुळे kernel चा संबंध मेमरी, डिस्क ड्राइव्ह, प्रोसेसर व इतर हार्डवेअर डिव्हाइसेसशी येतो या उलट युझरशी kernel चा संबंध कधीच येणार नाही अशी काळजी घेतली जाते. हे काम शेल (shell) पार पाडतो. शेल हा ऑपरेटींग सिस्टीमचा outer part असतो व त्याच माध्यमातून युझर काम करू शकतो.
Booting च्या वेळी kernel प्रथम मेमरी मध्ये लोड होतो व कंप्युटर shut down करे पर्यंत तेथेच मुक्काम करतो. सर्वात महत्वाचा पार्ट असल्यामुळे त्याची रवानगी प्रोटेक्टेड मेमरी मध्ये केली जाते ज्याला kernel space असे म्हणतात. त्यामुळे Operating system च्या इतर सर्व भागांना बेसीक सेवा आणी सुविधा (basic services) देण्याचे काम kernel चोखपणे पार पाडतो. या मध्ये मेमरी मॅनेजमेंट, प्रोसेस मॅनेजमेंट, फाइल मॅनेजमेंट आणी input/output मॅनेजमेंट हि सर्व  अति-महत्वाची कामे येतात.

03-kernel.pio१.     Kernel चे महत्वाचे पार्ट म्हणजे

२.     Scheduler ज्या प्रोसेस रन करायच्या आहेत त्याचे शेड्युल करणे व क्रमवारी ठरवणे, क्रमवारी मध्ये बदल करणे इत्यादी

३.     Supervisor प्रोसेस शेड्युल प्रमाणे रन करण्यासाट्ठी CPU ला जातात की नाही हे मॉनीटर करणे

४.     Interrupt handler हार्ड-डिस्क किंवा माउस/किबोर्ड सारख्या हार्डवेअर components कडून आलेले व्यत्यय interrupts कडे लक्ष देणे व त्यांची योग्य ती दखल घेणे

५.     Memory Manager प्रोसेसेस साठी मेमरी उपलब्ध करून देण्याची व्यवस्था बघणे

common-kernel1

कर्नल चे चार प्रकारामध्ये वर्गीकरण करता येते म्हणजेच ४ प्रकारचे कर्नल उपलब्ध आहेत हे वाचून तुम्हाला आश्चर्य सुद्धा वाटेल. पण त्याचे monolithic kernel, micro kernel, hybrid kernel आणी exokernels असे चार प्रकार आहे.

Monolithic kernel म्हणजे परीपुर्ण असे कर्नल. ऑपरेटींग सिस्टीमची सर्व फंक्शन्स पार पाडणारे, व सर्व डिव्हाइस ड्रायव्हर्स असणारे कर्नल म्हणजे मोनोलिथीक कर्नल. त्यामुळे डिस्क ड्राइव्ह, प्रिंटर, व्हिडीओ कार्ड या सर्वांशी संधान बांधून काम करण्याची ऐपत मोनोलिथीक कर्नल मध्ये असते. लिनक्स याच प्रकारात येते.

Micro kernel : कमीत कमी फंक्शन्स असणारी व फक्त गरजेच्या सेवा सुविधा उपलब्ध करून देणारे कर्नल म्हणजे micro kernel. Mach, Mac OS X, MINIX या सर्व ऑपरेटींग सिस्टीमची कर्नल्स या प्रकाराची समजली जातात.

वरील दोन्ही कर्नल मधील कर्नल म्हणजे Hybrid Kernel. Karnel space जास्त प्रमाणात उपलब्ध असल्यामुळे microkernel पेक्षा जास्त सुविधा मिळतात. Windows NT, Windows 2000, Windows XP या सर्वांचे कर्नल हे या प्रकारात मोडतात.

Exokernel मात्र सध्या प्रायोगिक तत्वावर आहेत. कमीत कमी जागेमध्ये जास्तीत जास्त फंक्शनॅलिटीज देण्याच्या दृष्टीने प्रयत्न या मध्ये चालू आहेत. खरं तर हा प्रयत्न डेव्हलपर मंडळीच्या सोयीसाठी चालला आहे…!

printf function… C language ओळख…!

C language मध्ये printf म्हणजेच print function ची ओळख पहील्याच दिवशी होते. डेनीस रिची ला C language हि compact form मध्येच हवी होती. म्हणून जाणीवपुर्वक त्याने input/output ची सोय language च्या definition मध्ये केलेली नाही. अर्थात printf हे फंक्शन C language चा inherent part आहे अशी अनेक जणांची सुरवातीला समजूत होते हा भाग वेगळा. 

printf function हे formatted console I/O functions या category मध्ये येते. प्रथम मी या category चा अर्थ काय आहे ते सांगते. 

NAB-Ad-console

 

  1. Console : या शब्दाचे अनेक अर्थ आहेत. English मध्ये त्याचा अर्थ सांत्वंन करणे असा आहे. तर Computer मध्ये keyboard व monitor चे combination, display monitor, command line interface, computer terminal असे अनेक आहेत. C language च्या मर्यादीत अर्थ पहायचा असेल तर शक्यतो असे application ज्या वर फक्त text based output अशी स्क्रिन. यालाच console असे शक्यतो ओळखले जाते. व printf function कॉल करून प्रिंट केलेले output console ला म्हणजेच monitor ला पाठवले जाते
  2. Formatted: Console Screen वर output नेमक्या ठिकाणी हवे असेल, दोन शब्दांमध्ये अथवा दोन वाक्यांमध्ये ठरावीक अतंर ठेवायचे असेल, किंवा real number print करतांना decimal point नंतर ठरावीक digits हवे असतील अशा प्रकारचे किंवा तत्सम प्रकारचे formatted output हवे असेल तर ते printf function च्या सहाय्याने करता येते. 
  3. I/O : Input व Output या जोडगोळीचे ते संक्षीप्त स्वरूप आहे. 

हे फंक्शन Compiler च्या library मध्ये उपलब्ध असते व त्याचा प्रोटोटाइप stdio.h या header file मध्ये असतो. तो साधारणपणे

int     _Cdecl printf(const char *__format, …);

असा आहे. या prototype वरून कोणती माहीती मिळते…? तर

  • printf function चा return type integer आहे
  • _Cdecl ला printf function चे calling convention म्हणतात. 
  • printf function पहीले argument string घेते
  • printf function चे दुसऱ्या argument मध्ये तीन dots दाखवले आहेत ज्याला ellipsis असे म्हणतात ज्याचा अर्थ variable number of arguments असा आहे. म्हणजेच printf function एक पेक्षा जास्त कितीही arguments घेते.

हे फंक्शन

  • series of arguments घेते
  • जर पहील्या स्ट्रिंग मध्ये काही format specifiers असतील तर त्या प्रमाणे apply करते
  • आणी formatted data console वर print करते

printf function ची वैशिष्ठे

  • By default printf function print करतांना right hand side ला word wrap facility वापरते
  • \n हे special implementation control character आहे ज्या मध्ये control next line ला नेण्याचे काम करते
  • Screen scroll down करण्याची सुविधा सुद्धा printf function मध्ये built in आहे
  • character print केल्या नंतर cursor next position ला नेण्याचे काम सुद्धा automatically नेण्याची provision आहे
  • पहील्या format specifier ला format नंतरचे पहीले argument connect करण्याचे, दुसऱ्या format specifier ला format नंतरचे दुसरे argument connect करण्याचे व त्याच पद्धतीने पुढील format specifier apply करण्याची built in सुविधा printf function मध्ये आहे

format specifier चा typical form


% [flags] [width] [.prec] [{h|l}] type

असा आहे. 

या मध्ये अनेक प्रकारचे flags व type आहेत. पण महत्वाचे व नेहमी लागणारे मी येथे घेते. बाकीचे स्पेशल पुढील पोस्ट मध्ये. 

int x = 55;

printf(“x = %o”,x); 

असे असेल तर o हा एखादा integer number जर octal format मध्ये print करायचा असेल तर वापरतात. या ठिकाणी तुम्हाला output मात्र 

x = 67

असे येइल. पण तुम्हाला true octal representation हवे असेल तर मात्र printf function 

printf(“x = %#o”,x);

असे लिहावे लागेल, या ठिकाणी # हा flag आहे . 

समजा तुम्हाला x = 55 या स्टेटमेंट नंतर value print करतांना मात्र +55 अशी हवी असेल तर + flag वापरावा लागेल जसे की 

printf(“x = %+d”,x); 

समजा आपल्याला 55 च्या अलीकडे 4 zero हवे आहेत. तर 0 असा flag टाकावा लागेल. जसे की

printf(“x = %06d”,x); 

असे स्टेटमेंट लिहीले तर output 000055 असे मिळेल. 

print होतांना तुम्हाला width specify करायची असेल तर ती सुद्धा देउ शकता. जसे की 

printf(“x = %d”,x); असे लिहीले तर output 

x = 55 

असे मिळेल. पण समजा

printf(“x = 10d”,x);

असे लिहीले तर 10 columns जागा राखीव ठेवून मग त्या ठिकाणापासून डाव्या बाजूला printing होइल जसे कि

x =           55

असे होइल. 

समजा 

float y = 6.7;

असे स्टेटमेंट असेल तर 

printf(“y = %f”,y); 

हे स्टेट्मेंट printing करतांना 

y = 6.700000 

असे करेल. पण जर 

printf(“%0.2f”,y);

असे लिहीले तर मात्र output

y = 6.70 

असे मिळेल.   

C language मध्ये असलेल्या वेगवेगळ्या format specifiers ची माहीती मी या पुर्वीच Blog वर टाकली आहेत