两个相等整数值之间的比较在C中返回false

时间:2016-04-07 14:57:42

标签: c linux

我目前正在编写一个需要向内核添加新系统调用的作业,而且在C中编写系统调用测试时遇到了一个奇怪的问题。

在其中一个测试中,我将系统调用的返回值与值1进行比较,即使系统调用返回1,if语句也会失败。

用于比较的MACRO:

#define CHECK(expr,expected) \
    if ((expected) !=(expr)) {\
    printf("\nCheck failed (%s:%d).\n", __FILE__, __LINE__); \
    printf("Expected: %d, got: %d\n", expected, expr);\
    test_failed = 1; \
}

测试失败的行:

CHECK(unblock_program(strings[PROG_A], lengths[PROG_A]), 1);

我在linux-2.4.18-14上运行测试。

1 个答案:

答案 0 :(得分:1)

如果出现错误,系统调用将返回-1。

您必须检查包含系统调用的返回值的errno的值。

当系统调用成功时,它必须返回0,而不是1。