如何使用unistd.h中的读取继续读取文件

时间:2014-10-26 00:35:53

标签: c++ user-interface while-loop unistd.h

我正在使用Qt进行项目。我将从unistd.h中读取一个文件,但是我怎么能这样做呢?我试图使用无限循环但我的应用程序崩溃时,我这样做。

PS我是Qt和fileoperation(unistd.h)的初学者。

int fd;
char c;

fd = open("/home/stud/txtFile", O_RDWR);//open file
if(fd == -1)
    cout << "can't open file" << endl;

read(fd, (void*)&c, 1);

if(c == '1')
    //do stuff
else
    //do stuff

1 个答案:

答案 0 :(得分:0)

如果您被迫使用低级读(),请确保在阅读之前检查有效的文件描述符。

即使打开失败,您的示例代码仍会尝试读取。

更改为:

fd = open("/home/stud/txtFile", O_RDWR);//open file
if(fd < 0) {
    cout << "can't open file" << endl;
    // potentially you may want to exit() here
}
else {
    read(fd, (void*)&c, 1);
    // if done with file for this pass, close it. If you need to read again
    // in same program keep it open
    close(fd);
}

您的示例代码在阅读后永远不会关闭文件。所以我不知道“继续阅读”是什么意思;如果你的意思是在没有close()的情况下反复打开和阅读该代码,那么你最终会用完描述符。