确定一段代码是否通过MSVC退出程序

时间:2010-07-01 16:08:04

标签: c visual-c++ exit

在Gnu系统上,我可以编写一个C ++宏,比如dies_ok(),它将分叉一个新进程,运行一段代码,之后它可以写入一个它没有退出的共享内存,然后在父进程中,我可以确定它是否已退出。这对测试很有用:

dies_ok({int x = 0/0;}, "can't divide by zero");
lives_ok({int x = 3/7;}, "this is a perfectly fine statement");
dies_ok({abort();}, "abort kills the program");

有没有办法在没有fork函数的MSVC上实现这个目的?

编辑:以下是使用gcc:http://github.com/zorgnax/libtap/blob/master/tap.h

在Linux上运行的实现

1 个答案:

答案 0 :(得分:1)

CreateProcess就像fork()/ exec()

BOOST库具有对msvc的共享内存支持。您还可以使用Windows原生的Windows原子表 - 了解

http://msdn.microsoft.com/en-us/library/ms649053(VS.85).aspx

问:我不明白为什么在unix中你必须将一个字符串写入共享内存。您只需从子进程调用exit(n),其中n是索引的预定义char * p []错误代码或成功代码列表。您可以拥有255个值的数组,EXIT_SUCCESS不包括0。或者阅读sysexits.h头文件以获取另一组想法。 wait()或waitpid()将返回退出代码,或确定进程是否未退出