c - 用MSVC判断一段代码是否退出程序

标签 c visual-c++ exit

在Gnu系统上,我可以编写一个像dies_ok()这样的C宏,它会 fork 一个新进程,运行一段代码,然后它可以写入一 block 没有退出的共享内存,然后在父进程中我可以确定它是否退出。这对于测试很有用:

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 上完成此操作吗?

编辑:这是在 Linux 上使用 gcc 运行的实现:http://github.com/zorgnax/libtap/blob/master/tap.h

最佳答案

CreateProcess 就像 fork()/exec()

BOOST 库为 msvc 提供共享内存支持。您还可以使用 Windows 原生的 Windows 原子表 - 请参阅 msdn

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() 将返回退出代码,或判断进程是否未退出

关于c - 用MSVC判断一段代码是否退出程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3159604/

相关文章:

c - 如何获取指向 MSVC 中二进制部分的指针?

c++ - 将 __attribute__ 与 typedef 结合使用

sql-server - 退出存储过程

c - 函数指针的结构

c - '=' token 之前出现错误 : expected ',' , ';' 、 'asm' 、 '__attribute__' 或 '{'

c - 数独网格生成器

memory - 运行top,打印输出,然后退出,或者如何获得实际的内存使用情况而无top

当程序被 kill 命令停止时关闭 tcp 套接字

windows - 哪些 Windows (C++) 屏幕捕获库符合我的要求?

c++ - 无法退出 while 循环与 boolean 条件 c++