函数

GLibtest_trap_fork

已弃用:未知 自:2.16

声明 [src]

gboolean
g_test_trap_fork (
  guint64 usec_timeout,
  GTestTrapFlags test_trap_flags
)

说明 [src]

为当前测试程序 fork,以执行可能不会返回或可能中止的测试用例。

如果 usec_timeout 非 0,则在 fork 的测试用例运行时间超过 usec_timeout 时,会中止测试用例并认为测试用例失败。

可以使用 GTestTrapFlags 标志配置 fork 行为。

在以下示例中,测试代码执行 fork,fork 的子进程会生成一些示例输出并成功退出。然后,fork 的父进程断言子程序成功终止,并验证子程序输出。

  static void
  test_fork_patterns (void)
  {
    if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
      {
        g_print ("some stdout text: somagic17
");
        g_printerr ("some stderr text: semagic43
");
        exit (0); // successful test run
      }
    g_test_trap_assert_passed ();
    g_test_trap_assert_stdout ("*somagic17*");
    g_test_trap_assert_stderr ("*semagic43*");
  }

自版本 2.16 起提供

自版本未知起弃用

此函数仅在 Unix 平台中实现,且由于 fork-without-exec 中固有的问题而并非总是可靠,并且在文件描述符上不会设置 close-on-exec 标志。请改用 [email protected]_trap_subprocess] 。

参数

usec_timeout

类型: guint64

以微秒为单位的 fork 测试超时时间。

test_trap_flags

类型: GTestTrapFlags

用于修改 fork 行为的标志。

返回值

类型: gboolean

对于 fork 的子级为 true,对于正在执行的父级进程为 false。