pread和pwrite没有定义?

时间:2012-09-13 17:47:30

标签: c linux atomic glibc unistd.h

我正在尝试使用pread和pwrite,以便我可以lseek到文件的开头并开始读取或写入一个原子操作。这两个函数对我来说都会这样做,但我遇到的问题是,即使在我添加warning: implicit declaration of function ‘pread’#define _XOPEN_SOURCE 500之后,编译器也会给我#include<unistd.h>。我错过了什么吗?函数调用的两个语句如下。 谢谢!

 #include<unistd.h>



 #define _XOPEN_SOURCE 500
    int main (int argc, char *argv[])
    {



while ( (read_in += pread(source_fd, in_buf, in_buf_size,read_in) )  )
    {

if (write_out += pwrite(dest_fd, in_buf, read_in, write_out) == -1)
        {

1 个答案:

答案 0 :(得分:4)

您需要在 之前定义_XOPEN_SOURCE 500

#define _XOPEN_SOURCE 500

#include<unistd.h>

否则,unistd.h标题将看不到宏定义。