我必须捕捉以下模式:
"rb","r+b"和"wb"。
我尝试执行以下代码(已编译):
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
FILE *file = fopen("data.bin", "r");
if (!file) {
perror("");
return -1;
}
int fd = fileno(file);
if (fcntl(fd, F_GETFL) == O_RDONLY) {
printf("read only\n");
}
// printf("%d\n", O_APPEND);
fclose(file);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但什么也没打印出来。fcntl()返回整数,如32768,但我需要库中的宏,如O_RDONLY.
运行程序时出现段错误。然后,我搜索了我的问题,并尝试遵循https://www.gnu.org/software/gcc/bugs/segfault.html中的步骤。
我没有配置GCC,--enable-checking那么我的第一个问题是-
1)是否需要对其进行配置和编译-v -da -Q?
但是我总是使用诸如的标志进行编译-g -o0。在带有参数的GDB中运行程序后,我得到以下信息:
2)segfault后无法打印变量,可以吗?
3)如何找出发生段错误的源代码行?