0

我正在使用linux manjaro。我有以下代码(cons.c)

#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *f=freopen("/dev/null", "a", stdout); //redirect stdout to /dev/null
    FILE *g=freopen ("/dev/tty", "a", stdout); // redirect stdout back to console
    printf("%p %p\n",f,g);
    return 1;
}

我执行了以下操作并得到了预期的结果

[tom@sp4 src]$ gcc -g cons.c -o cons
[tom@sp4 src]$ ./cons
0x7f19897b7520 0x7f19897b7520

当我在底线设置断点并使用 VS Code 交互式调试器进行调试时,g 返回 null 并且 printf 什么也不做。

4

1 回答 1

0

问题在于 VS Code 中的交互式调试器。在 VS Code 终端中使用 gdb 进行调试时,它工作正常。在 VS 代码中使用交互式调试器时,第二次重新打开返回 null。感谢约翰·布林格。

于 2022-02-01T11:02:02.707 回答