我正在尝试使用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)
{
答案 0 :(得分:4)
您需要在 之前定义_XOPEN_SOURCE 500
:
#define _XOPEN_SOURCE 500
#include<unistd.h>
否则,unistd.h
标题将看不到宏定义。