我想開發一個概念驗證程序,打開一個文件,讀取一些數據並關閉它,都不使用fopen/getc/fclose函數。相反,我現在用的是低級別打開/讀取/關閉等價物,但沒有運氣:我不能使打開/讀取/關閉低級別的功能,在Ubuntu中工作
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
int main (int argc, char **argv) {
int fp;
ssize_t num_bytes;
if (fp = open ("test.txt", O_RDONLY) < 0) {
perror("Error opening file");
return 1;
}
char header[2];
while (num_bytes = read (fp, &header, 2) > 0)
printf("read %i bytes\n", num_bytes);
printf("done reading\n");
close (fp);
return 0;
}
如果不存在文件,打開正確打印錯誤消息。另一方面,如果文件存在,則程序將停止在read()函數中,原因不明。對此有何幫助?
很明顯,我應該更加緊密地檢查通過-Wall什麼GCC報告開關 – charis