实在不明白exit与return的功能区别,请指教! 同题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 exit ---- 退出 结束return --- 表示当前这一函数,可能是主函数,也可能是某个函数结束,并且要返回一个类型的值给调用它得地方。 那么exit(1)与return 1又有什么区别? exit不管经过了几层调用都结束函数,继而结束主函数main或WinMain,return 是由被调函数返回调用它的函数。 exit:退出程序return:退出当前函数 是呀,exit更深层次的直接退出全部。 return 1返回函数的值为1。exit只知道是退出。 那么exit(0)与exit(1)分别有什么含义?谢谢大家 exit是进程终止的函数调用,参数是进程退出状态值,exit会对进程做清除处理,关闭所有io流,关闭所有句柄、描述字,然后通过_exit系统调用进入内核,返回startup启动程序,同时也将状态参数传回。有exit调用就不是异常退出,所谓进程异常退出都是未经exit而结束,比如abort之类,或是被其他进程term掉,状态参数是提供给操作系统的进程终止状态,返回给启动进程的进程,unix里一般是返回给shell,windows则是返回给explorer exit() 一般情况返回0是正常,返回其它数字异常,这个号码是程序员定义的这个返回值可以通过系统的shell得到,当然也可以通过IPC得到你可以写内核程序来识别这些返回值作出响应的动作:) 例子主程序void main( VOID ){ STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); // Start the child process. if( !CreateProcess( NULL, // No module name (use command line). "d:\\a.exe", // Command line. NULL, // Process handle not inheritable. NULL, // Thread handle not inheritable. FALSE, // Set handle inheritance to FALSE. 0, // No creation flags. NULL, // Use parent's environment block. NULL, // Use parent's starting directory. &si, // Pointer to STARTUPINFO structure. &pi ) // Pointer to PROCESS_INFORMATION structure. ) { ErrorExit( "CreateProcess failed." ); } // Wait until child process exits. WaitForSingleObject( pi.hProcess, INFINITE ); DWORD exitcode; GetExitCodeProcess( pi.hProcess, &exitcode ); printf( "程序a.exe 退出值为 %d\n", exitcode ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread );}a.cint main(){ return 0; //把return 0;以后分别改为return 1,exit( 0 ), exit( 1 )再运行主程序} 求助,关于对话框中画图的2个问题,谢谢 请问如何通过VC编程实现与telnet服务器交互? 急救:windows 2003下安装Visual Studio 6.0蓝屏! 请VC高手指教!!!! 要在qq聊天时点发送后得到聊天内容,用什么hook好? 关于CTreeCtrl的几个疑问,麻烦进来看一下。 一个小问题请大家帮忙谢谢! 请问数组长度最长为多少?? 短信开发 CMC.DLL 是干什么的? 请问在MDI应用程序中,左边的WorkSpace视图如何刷新?急,在线等!初学者 请教:用CRect获取对话框界面客户区域,出错。
exit(1)与return 1
又有什么区别?
return:退出当前函数
分别有什么含义?
谢谢大家
有exit调用就不是异常退出,所谓进程异常退出都是未经exit而结束,比如abort之类,或是被其他进程term掉,状态参数是提供给操作系统的进程终止状态,返回给启动进程的进程,unix里一般是返回给shell,windows则是返回给explorer
这个返回值可以通过系统的shell得到,当然也可以通过IPC得到
你可以写内核程序来识别这些返回值作出响应的动作:)
主程序void main( VOID )
{
STARTUPINFO si;
PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) ); // Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
"d:\\a.exe", // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
ErrorExit( "CreateProcess failed." );
} // Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
DWORD exitcode;
GetExitCodeProcess( pi.hProcess, &exitcode );
printf( "程序a.exe 退出值为 %d\n", exitcode );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}a.c
int main()
{
return 0;
//把return 0;以后分别改为return 1,exit( 0 ), exit( 1 )再运行主程序
}