主题:新手问题;return值有何作用
v12r45
[专家分:0] 发布于 2007-10-23 20:49:00
#include <iostream>
int main()
{
using namespace std;
int carrots;
carrots = 25;
cout << "I have";
cout << carrots;
cout << " carrots.";
cout << endl;
carrots = carrots - 1;
cout << "Crunch,crunch.Now I have" << carrots << "carrots." << endl;
return 0;
这段貌似有没return 0都能运行.那个0又有什么用,换100我也没看出变化
回复列表 (共13个回复)
11 楼
rickone [专家分:15390] 发布于 2007-10-26 22:13:00
[quote][quote]有点怀疑楼上的说法,进程间通信多用文件的方法,而不是靠一个返回值这么简单,因为进程在实际内存中是变动的,而且变量在虚拟内存上是隔离的,如果用寄存器,进程多起来也是不够的。个人觉得这个return 0只是标准,只是教条,遵守就行了。[/quote]
说个 WIN32 API 你就明白了
BOOL GetExitCodeProcess(
HANDLE hProcess, // handle to the process
LPDWORD lpExitCode // address to receive termination status
);
这个东西就是为了获得那个 return 值的, 这个函数还可以判定子进程是否还在运行.
子进程正常退出当然有机会把各种消息告诉父进程,但是子进程如果是非正常退出的话就
未必有机会把各种消息告诉父进程了.但这个 API 函数无论如何都有效.而且退出码在很多时候还表示附加的信息.
这只是 WINDOWS 平台上的一个例子. 操作平台那么多, 消息机制也互不相同,非正常退出时是否还有机会发送消息是和平台有关的.但是, 通过这个退出码来传递信息这个途径和平台无关.[/quote]
看了这个说明,哈,我还真没用过这个函数,不知道MS是怎么实现的?什么时候能用到多进程啊,做外挂?
12 楼
huar321 [专家分:30] 发布于 2007-10-27 23:18:00
哦 知道了,谢谢你啊(楼上的)!要不然就总错了,呵呵 !
13 楼
yuzhe0527 [专家分:0] 发布于 2010-04-29 13:21:00
[quote][quote][quote]有点怀疑楼上的说法,进程间通信多用文件的方法,而不是靠一个返回值这么简单,因为进程在实际内存中是变动的,而且变量在虚拟内存上是隔离的,如果用寄存器,进程多起来也是不够的。个人觉得这个return 0只是标准,只是教条,遵守就行了。[/quote]
说个 WIN32 API 你就明白了
BOOL GetExitCodeProcess(
HANDLE hProcess, // handle to the process
LPDWORD lpExitCode // address to receive termination status
);
这个东西就是为了获得那个 return 值的, 这个函数还可以判定子进程是否还在运行.
子进程正常退出当然有机会把各种消息告诉父进程,但是子进程如果是非正常退出的话就
未必有机会把各种消息告诉父进程了.但这个 API 函数无论如何都有效.而且退出码在很多时候还表示附加的信息.
这只是 WINDOWS 平台上的一个例子. 操作平台那么多, 消息机制也互不相同,非正常退出时是否还有机会发送消息是和平台有关的.但是, 通过这个退出码来传递信息这个途径和平台无关.[/quote]
看了这个说明,哈,我还真没用过这个函数,不知道MS是怎么实现的?什么时候能用到多进程啊,做外挂?[/quote]
我来回复