PDA

View Full Version : مبتدی: خروجی صفر و یک در پس زمینه اجرای یک برنامه



Honestvip
شنبه 24 اسفند 1392, 13:21 عصر
با سلام

در پس زمینه اجرای یک برنامه بر اساس درست اجرا شدن یا نشدنش یک خروجی صفر و یک قرار داده میشه

اینو چطوری میشه پیدا کرد یا نمایش داد ؟

shahryari
شنبه 24 اسفند 1392, 15:49 عصر
با سلام

در پس زمینه اجرای یک برنامه بر اساس درست اجرا شدن یا نشدنش یک خروجی صفر و یک قرار داده میشه

اینو چطوری میشه پیدا کرد یا نمایش داد ؟

کدوم برنامه
برنامه نویسا علم غیب ندارن که ... یه عکسی بزار
شاید برای پس زمینه از فایل gif یا امثالهم استفاده کرده ....

Honestvip
شنبه 24 اسفند 1392, 17:30 عصر
کدوم برنامه
برنامه نویسا علم غیب ندارن که ... یه عکسی بزار
شاید از فایل gif یا امثالهم استفاده کرده ....

همه برنامه هایی که حداقل با C یا c++ نوشته میشه

rahnema1
یک شنبه 25 اسفند 1392, 00:35 صبح
شما ابتدا برنامه مورد نظر را با تابع CreateProcess اجرا می کنید سپس با تابع GetExitCodeProcess نحوه اتمام پروسه مورد نظر را بررسی می کنید
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms683189(v=vs.85).aspx

saaaaam
پنج شنبه 14 فروردین 1393, 14:32 عصر
rahnema1 (http://barnamenevis.org/member.php?305905-rahnema1)
عزیز اگه امکانش هست کمی بیشتر توضیح بده .... ممنون

rahnema1
پنج شنبه 14 فروردین 1393, 15:47 عصر
اگه در یک برنامه خطا پیش بیاد exit code اون غیر از صفر میشه مثلا این برنامه را بینید که عمدا درست کردیم که با خطا خارج بشه به عنوان فایل p1.exe کامپایل کنید

//p1.cpp
#include <stdio.h>
int main(int argc, char **argv)
{
int *z=0;
printf("%d,",*z);
}


حالا کد زیر را ببینید این کد برنامه اولی را اجرا می کنه و exit code اون را چاپ می کنه


#include <windows.h>
#include <stdio.h>
PROCESS_INFORMATION p1;
PROCESS_INFORMATION StartNewProcess(char *program)
{
STARTUPINFO startup;
memset(&startup, 0, sizeof(STARTUPINFO));
PROCESS_INFORMATION process;
memset(&process, 0, sizeof(PROCESS_INFORMATION));
CreateProcess(program, NULL,
NULL, NULL,
FALSE,
0 ,
NULL,
NULL,
&startup,
&process);
return process;
}

int main(int argc, char **argv)
{
p1=StartNewProcess("p1.exe");
Sleep(2000);
DWORD a;
GetExitCodeProcess( p1.hProcess,&a);
printf("\n%d\n",a);
CloseHandle(p1.hProcess); CloseHandle(p1.hThread);
}

می بینید که به علت خطا عدد منفی چاپ میشه
حالا خودتون یک برنامه بنویسید که خطا نداشته باشه مثلا یک عدد را چاپ کنه در این صورت عدد 0 چاپ میشه