دستور exit در سی پلاس

asghar-zamani

New Member
سلام به همه بچه های majid online اقایون من 1 سوالی داشتم اگر جواب بدید ممنون میشم !!
سوال:
exit :1 در زیان ++c درون چه هدر فایلی (header file) قرار دارد ؟
2: در عملکرد exit چه فرقی میکنه وقتی به ان 0 یا 1 داده شود؟

ممنونم از همتون
 

saalek110

Well-Known Member
نقل از :
http://forum.persiantools.com/showpost.php?p=483076&postcount=23
=======================================

در مورد سئوالي كه كردي stdlib با اجازه دوستان :
تا اونجاي كه من ميدونم اين هدر يكسري توابع كاربردي و محاسباتي رو توش داره كه شايد بعدا توي مثال هاي كه داره ازش استفاده كنه كل ليست توابعش اينه :

کد:
abort Abort current process returning error code 
  abs Return absolute value of integer parameter 
  atexit Specifies a function to be executed at exit 
  atof Convert string to double 
  atoi Convert string to integer 
  atol Convert string to long 
  bsearch Binary search 
  calloc Allocate array in memory 
  div Divide two integer values 
  ecvt Convert floating point value to string 
  exit Terminate calling process 
  fcvt Convert floating point value to string 
  free Deallocate dynamically allocated memory 
  gcvt Convert floating point value to string 
  getenv Get string from environment 
  itoa Convert integer to string 
  labs Return absolute calue of long integer parameter 
  ldiv Divide two long integer values 
  lfind Linear search 
  lsearch Linear search 
  ltoa Convert long integer value to string 
  malloc Allocate memory block 
  max Return the greater of two parameters 
  min Return the smaller of two parameters 
  putenv Create or modify environment variable 
  qsort Sort using quicksort algorithm 
  rand Generate random number 
  realloc Reallocate memory block 
  srand Initialize random number generator 
  strtod Convert string to double-precision floating-point value 
  strtol Convert string to long integer 
  strtoul Convert string to unsigned long integer 
  swab Swap bytes 
  system Execute command 
  ultoa Convert unsigned long integer to string
كه ميشه به چند دسته تقسيمش كرد يكي
كار با استرينگ ها ست مثا qsort
يكي كار با حافظه است مثل free
يكي ديگه محاسباتي هان ( من بيشتر از اين توابعش استفاده ميكنم و دسته بعدي) مثل div
يكي ديگه دسته اي كه مربوط به كارهاي پروسسي ميشه مثل exit كه اينم زياد استفاده ميشه
 

saalek110

Well-Known Member
نقل از :
http://crasseux.com/books/ctutorial/The-exit-function.html#The exit function
==================================

The exit function
GNU coding standards specify that you should always use exit (or return) within your main function. (See Style.)

You can use the exit function to terminate a program at any point, no matter how many function calls have been made. Before it terminates the program, it calls a number of other functions that perform tidy-up duties such as closing open files.

exit is called with a return code, like this:
exit(0);

In the example above, the return code is 0. Any program that calls your program can read the return code from your program. The return code is like a return value from another function that is not main; in fact, most of the time you can use the return command within your main, instead of exit.

Conventionally, a return code of 0 specifies that your program has ended normally and all is well. (You can remember this as "zero errors", although for technical reasons, you cannot use the number of errors your program found as the return code. See Style.) A return code other than 0 indicates that some sort of error has occurred. If your code terminates when it encounters an error, use exit, and specify a non-zero return code.

 

the_king

مدیرکل انجمن
تابع () exit در process.h و stdlib.h تعریف شده.
تک پارامتر ورودی آن عددی است که پس از خاتمه اجرای برنامه بازگشت داده می شود.
مقادیر این پارامتر محدود به 0 و 1 نیستند و در حالت استاندارد عدد صفر نشانگر این است که برنامه بدون مشکل اجرا شده است.
از سایر اعداد (بجز صفر) برای مشخص کردن کد خطایی استفاده می شود که برنامه به دلیل آن خطا کار خود را پایان می دهد.
اینکه این اعداد مشخص کننده چه خطایی باشند بستگی به طراحی برنامه نویس دارد و برای هر برنامه متفاوت است.

مثلا در این فایل Batch (با پسوند .bat) اگر کد بازگشتی از برنامه Test.exe برابر 1 باشد پیغامی چاپ می شود :

کد:
Test.exe
IF ERRORLEVEL 1 ECHO The operation failed.
 

saalek110

Well-Known Member
سئوال اول شما را که دوستمان جواب داد. یعنی هدرهای process.h و stdlib.h را می توانید اینکلود کنید و این تابع را استفاده کنید.
راجع به سئوال دوم شما: این تابع یعنی exit هر جا استفاده بشود باعث اختتام برنامه می شود.
حالا شما می توانید براحتی از آن استفاده کنید.
یعنی هر جا به کار رود و داخل هر تابعی باشید و یا هر قسمت دیگر برنامه باعث اختتام برنامه می شود.
هر عددی هم بدهید به این تابع باز کار خود که اختتام برنامه است را انجام می دهد ولی این که چه استفاده ای از دادن اعداد مختلف میشه کرد را من نمی دانم.
 

asghar-zamani

New Member
عزیزایمن هرکس جواب اینو بلده بیاد بگه
در عملکرد exit چه فرقی میکنه وقتی به ان 0 یا 1 داده شود؟
 

the_king

مدیرکل انجمن
ببینید، اجرای تابع ()exit منجر به خاتمه یافتن اجرای برنامه و آزاد کردن منابع آن خواهد شد.
وقتی برنامه شما خاتمه پیدا می کنه دیگه کدی اجرا نمی کنه که عددی رو که به عنوان پارامتر بهش می دهید
رویش تاثیر گذار باشه.
این عدد بازگشتی به درد سایر برنامه هایی خواهد خورد که در محیط بیرون برنامه درخواست اجرای برنامه شما را
داشته اند.
یک مثال می زنم، شما یک برنامه نوشته اید که مثلا یک سری تصویر رو نشون می ده.
برنامه شما به دو طریق خاتمه پیدا می کنه :
حالت اول وقتی که تمامی تصاویر رو نشون داده باشه و حالت دوم وقتی که کاربر کلید ESC رو فشار بده.

حالا من می خواهم یک برنامه که رو در کنار برنامه شما اجرا کنم که موسیقی پخش کنه.
اینجوری برنامه شما تصویر و برنامه دیگری صدای زمینه رو ایجاد می کنه.

اما من می خواهم که وقتی نمایش تصاویر تموم شد، از نو آنها را از اول نشون بده و وقتی ESC فشرده شد، برنامه موسیقی
رو هم خاتمه بدهم.
اما مشکل اینجا است که وقتی اجرای برنامه شما خاتمه پیدا کرد من از کجا بفهمم که علتش حالت اول بوده یا دوم؟
اینجا است که آن پارامتر کذایی بدرد می خوره. مثلا شما در برنامه تان از مقدار 8 برای خروج با ESC و از مقدار 0 برای خروج
در هنگام نمایش کلیه تصاویر استفاده می کنید.

حالا من می توانم با توجه به عدد خروجی برنامه شما بفهمم که کاربر کلید ESC رو فشار داده یا پخش تصاویر به پایان رسیده.
مثلا اسم برنامه شما Slide.exe است و اسم برنامه پخش موسیقی Sound.exe (که مثلا با سوئیچ quit/ به کارش پایان میده).
این فایل batch می تونه اون پخش همزمانی که مد نظر من هست رو ارائه کنه (مثلا فایل Play.bat) :
کد:
Sound.exe
:Loop
Slide.exe
IF NOT ERRORLEVEL 8 GOTO Loop
Sound.exe /quit

ERRORLEVEL یک متغیر استاندارد در سیستم عامل داس و ویندوز است که مقدار پارامتر بازگشتی رو مشخص می کنه.
این مقدار همواره مربوط به آخرین برنامه ای است که اجرا شده.
تمامی برنامه هایی که مربوط به سیستم عامل هستند، مثل Format.exe و Chkdsk.exe و بسیاری از برنامه ها و ابزارهایی
که در کامپیوتر اجرا می کنید مقدار بازگشتی شان را برای تشخیص انواع خطا ها بکار برده اند.
بصورت یک استاندارد از عدد صفر زمانی استفاده می کنیم که اجرای برنامه بدون هیچگونه مشکل و بصورت عادی
خاتمه پیدا می کنه.
اما اینکه فرق 0 و 1 یا 8 یا 1000 در چیه بستگی به برنامه نویسی داره که برنامه رو نوشته.
اگه قرار نیست که از این مقدار بازگشتی استفاده مفیدی بشه، برای شما فرقی نخواهد کرد، البته بهتره که در این حالت
از کد صفر استفاده کنید، چون بصورت کلی اعداد غیر صفر برای وقوع خطا استفاده می شوند.
 

جدیدترین ارسال ها

بالا