小编Jos*_*ord的帖子

异常终止时需要调用ioctl(tty0_fd, KDSETMODE, KD_TEXT)

我在我的应用程序中使用 Linux 帧缓冲区,并设置ioctl(tty0_fd, KDSETMODE, KD_GRAPHICS)为防止底层终端显示任何光标或文本,然后在正常程序终止时进行清理。

但是KD_GRAPHICS在异常终止时保持模式是一件坏事,因为它使系统无响应,我想知道如何解决这种情况。

注册的函数atexit()仅在正常终止时调用,因此无济于事。我可以为任何可以杀死应用程序但SIGKILL不能被捕获的信号注册我自己的处理程序。

窗口环境和其他程序如何处理这种情况?

c linux termination framebuffer

5
推荐指数
1
解决办法
533
查看次数

试图抑制c假阳性泄漏警告

我正在Xcode 6.4(6E35b)下使用clang静态分析,并收到有关潜在内存泄漏的错误肯定警告。我确实明确释放了有问题的内存,但是释放发生在另一个编译单元中。这是我的MWE:

file2.c:执行实际的释放。

#include <stdlib.h>
void my_free(const void* p) {
    free((void*) p);
}
Run Code Online (Sandbox Code Playgroud)

file1.c:分配内存并通过外部函数显式释放它。

#include <stdlib.h>
void my_free(const void* p);

int main(int argc, char* argv[]) {
    void* data = malloc(1);
    if(data) my_free(data);
    return 0; /* <-- "Potential leak of memory pointed to by 'data'" */
}
Run Code Online (Sandbox Code Playgroud)

当我my_free()在与其调用相同的编译单元中进行定义时,不会生成警告,但是当然我需要my_free()从大量不同的源文件中进行调用。

我已经阅读了常见问题解答和如何处理常见的误报,但是并不能解决我的情况。我该怎么做才能确保clang确实释放了相关的内存?

如果版本信息是相关的:

% clang --version
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Run Code Online (Sandbox Code Playgroud)

c false-positive suppress-warnings clang-static-analyzer

5
推荐指数
1
解决办法
693
查看次数

GNU Make 规则仅在目标存在时执行?

在相当复杂的 Makefile 中,我偶尔会希望仅在目标确实存在时才调用某些规则。例如,我可能创建了一个本地目录并用于losetup将文件挂载到其中。我想在处理挂载点和目录时将其保持打开状态,但在某些操作之前自动关闭它们。

当需要打包时,我想要sync安装文件,umount然后对底层文件执行一些操作。是否有办法反转规则的含义,以便仅在存在特定目标时才执行规则?

makefile gnu-make mount-point

3
推荐指数
1
解决办法
1290
查看次数