لیست تمام توابع C و کتابخانه استاندارد POSIX



لیست تمام توابع زبان برنامه نویسی C به همراه جزئیات هر یک:

من بعد از یادگیری جاوا و کار کردن با java API documentation همیشه این سوال گوشه ذهنم بود که چرا زبان سی همچین چیزی نداره. داشتن یک لیست کامل از تمام توابع زبان برنامه نویسی خیلی حیاتی هست طوری که بدون آن برنامه نویسی اون حرفه ای بودن خودش رو از دست میده و دست و بال ادم بسته میشه. هیچ کاری از خودش نمیتونه انجام بده و فقط باید مثال های دیگران رو بکار بگیره. یک برنامه نویس حسابی نباید وابسته به 4 تا تابع تو جزوه و کتاب باشه و باید بتونه مستقلا هر چی دلش خواست بنویسه. حالا بعد از چند سال تقریبا به جواب سوالم دارم نزدیک میشم:


برای اینکه موقع نوشتن یک برنامه سی ببینیم چه توابعی در اختیار داریم راه های زیر رو باید با هم ترکیب کنیم:

2- جستجو در MSDN

3- جستجو در GNU C Library Manual

4- زدن کلید Ctrl+Space در محیط برنامه نویسی (مثلا Eclipse) برای باز شدن auto-complete یا Content-Assist
5- باز کردن هدر مربوطه به صورت درختی و مشاهده توابع درون header 




شرح برخی نکات فنی و اینکه POSIX چیست:

- زبان C بر خلاف جاوا به تنهایی توابع زیادی ندارد کتابخانه های جانبی به آن قدرت میدهند. از مهمترین کتابخانه ها که استاندارد IEEE شده POSIX هست که در GCC لینوکس کامل پشتیبانی میشود ولی برای استفاده در ویندوز باید از کامپایلر Cygwin یا Mingw استفاده شود و کامپایلر مایکروسافت posix رو پیش فرض نمیشناسد.

- POSIX : Portable Operating System Interface for Unix

- با برنامه نویسی تحت { Eclipse + Mingw-Cygwin } با کتابخانه استاندارد POSIX ، کد شما هم تحت ویندوز قابل کامپایل خواهد بود هم تحت لینوکس. بعبارتی کد شما portable - cross platform خواهد بود. بر خلاف برنامه نویسی با visual studio مایکروساقت. ضمنا در کامپایلر های فوق (gnu gcc) کتابخانه POSIX بطور پیش فرض وجود دارد و نیازی به دانلود جداگانه ان نیست.

- برای برنامه نویسی شبکه و نیز ریسمان (thread) ، خود C استاندارد تابع ندارد . اما POSIX توابع کاملی در این زمینه ها دارد (sys/socket.h برای شبکه  و pthread.h برای چند پروسه ای کردن یا همان ریسمان بندی ). طبیعی هست که استفاده از این کتابخانه استاندارد به کتابخانه های native ویندوز (winsock2.h برای شبکه) شرف دارد.

- در هنگام کامپایل برنامه تحت ویندوز با Mingw ممکن است برخی هدر ها که native ویندوز باشند توسط linker شناخته نشوند و خطای undefined reference to function دهند در این حالت باید مسیر library هدر فوق رو به linker بشناسونید ، با دستورات زیر : ( lws2_32- برای هدر winsock2.h و lpthread.dll- برای هدر pthread.h )
همچنین باید فایل dll این هدر ها همراه exe برنامه تون باشه . این فایلها رو میتونید از پوشه mingw/bin کپی کنید. libws2_32.a و libpthread.dll.a نام کتابخانه هایی است در پوشه mingw/lib .



-ضمنا لیست تمام توابع command ویندوز برای batch programming ، لیست تمام توابع جاوا و لیست تمام توابع Matlab رو در پست های قبلی ارائه کردم . لیست کل نوشته های وبلاگ رو هم میتونید ببینید!





مشکلات مودم adsl مارک cisco linksys WAG120N و راه حل های آن


مودم ای دی اس ال cisco linksys wag120n مشکلاتی دارد که خیلی از افراد را از خریدنش پشیمان میکند با اینکه سیسکو معتبرترین شرکت تجهیزات شبکه است ولی این دستگاه ظاهرا باگ هایی دارد که کابران را اذیت میکند در زیر دو مشکل اساسی را به همراه راه حل ان مطرح میکنم:

مشکل1:
وقتی چند کامپیوتر وایرلس و wired رو با هم شبکه میکنیم میبینیم بعد مدتی از اتصال سیستم وایرلس ، سیستم wired  او را نمیبیند و پینگ نمیکند ولی وایرلس ، wired را میبیند و پینگ هم میکند . و یا مثلا هر رو همزمان به اینترنت وصل هستند ولی file sharing بین انها کار نمیکند ، یا file sharing بعد مدتی خود به خود قطع میشود. بسته های arp روی قسمت وایرلس منتشر نمیشوند . اما قسمت switch مشکلی ندارد. در کل سیستم وایرلس نمیتواند درایو های خود را share کند اما سیستم های کابلی میتواننند
 
راه حل 1:
مشکل به خاطر باگی در Key Renewal است مقدار ان را از 3600 (یک ساعت) به (86400) (24 ساعت) افزایش دهید ، این مشکل انوقت به ندرت رخ خواهد داد.
wireless>wireless security>key renewal 

مشکل 2:
هر از گاهی اتصال وایرلس قطع میشود ، باید قطع و وصل کنم تا درست شود و دوباره اینطوری میشود ، هر گاه سیستم را برای بیش از یک ساعت به حال خود رها میکنم ارتباط قطع میشود، سرعت اتصال وایرلس دائما بین 54 ، 48 ، 36 ، 24 ، 11 ، 5 Mbps نوسان میکند حتی اگر خیلی به مودم نزدیک باشم. کلا وایرلس دستگاه مشکل دارد و ناپایدار است

راه حل 2:
دستگاه را بعد از تنظیم کردن همیشه روشن نگه دارید. یا بعد از هر بار روشن کردن به کانفیگ مودم قسمت وایرلس رفته و دکمه save را بزنید. باگی در بوت دستگاه وجود دارد که اگر برای مدت طولانی خاموش باشد و روشن شود درست تنظیمات بخش وایرلس را اعمال نمیکند و دستگاه باید به صورت دستی تنظیم شود . وقتی دکمه save را میزنید ، دستگاه تنظیمات درست را اعمال کرده و خود را restart میکند و از این به بعد تا زمانی که روشن باشد عین ساعت کار خواهد کرد و مشکلات فوق را نخواهد داشت.


مشکل 3:
سرعت اینترنت گاهی کم میشود ، گاهی اوقات صفحات وب را باز نمیکند ولی بعد چند دقیقه خود به خود خوب میشود ، گاهی بعد از اتصال کامپیوتر به وایرلس تا چند دقیقه اتصال کم سرعت است ، ...

راه حل 3:
این همان مشکل 2 است . برای اینکه مطمئن شوید مشکل کندی سرعت اینترنت از مودم شما است یا از ISP بهتر است اول دستور زیر را در کنسول اجرا کنید:
ping 192.168.1.1 -t 
این دستور ، مودم را پینگ میکند. اگر مقادیر time اکثرا 1 میلی ثانیه بودند یعنی اتصال تا مودم مشکلی ندارد اما اگر بیشتر time ها بیش از 2 میلی ثانیه بودند مشکل از مودم است ( البته اگر از لپتاپ پینگ میکنید باید به شارژر متصل باشد وگرنه power save هم پینگ را بالا میبرد). به عنوان مثال:
زمان پینگ ها = (1،1،1،2،1،1،1،1،1،3،1،1،17،1،1،1)   باشد یعنی مودم درست است
زمان پینگ ها = (5،5،4،2،5،4،5،1،5،3،7،3،17،5،1،5)   باشد یعنی مودم اشکال دارد 
زمان پینگ ها = (1،1،1،690،1،1،1،1،1،1200،1،1،1700،1،1،1)   باشد یعنی کامپیوتر اشکال دارد

 در حالت اول اشکال از ISP است و ربطی به تجهیزات شما ندارد
در حالت دوم اگر مطمئن هستید که کامپیوتر شما به برق متصل است نه باتری ، اشکال از مودم است . مودم wag120n به خاطر باگی که دارد درست بوت نشده است ، باید به کانفیگ مودم بروید و در قسمت wireless دکمه save را بزنید و دیگر مودم را خاموش نکنید.بعد از هر بار روشن کردن مودم همین کار را باید انجام دهید. 
در حالت سوم اشکال از درایور کارت وایرلس کامپیوتر شما است، مطمئن شوید که درایور به درستی نصب شده است . میتوانید با کابل به مودم متصل شوید و سرعت خود را تست کنید.