19
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
char data [ 6 ];
main ( ) {
int len;
desc = open ( "Resultat", O_WRONLY | O_CREAT | O_EXCL, 0666 );
if ( desc != -1 ) {
len = write ( desc, &data, sizeof ( data ) );
if ( len != sizeof ( data ) )
printf ( "ERROR" );
} }

这是我的代码,我收到了错误

O_WRONLY undeclared (first use in this function)
O_CREAT undeclared (first use in this function)
O_EXCL undeclared (first use in this function)

我该如何解决?

4

3 回答 3

23

@Kevin 是对的。在我的 Arch 安装中,根据man fcntl.h,您需要#include <fcntl.h>访问O_WRONLY.

要使用open(),您还需要#include <sys/stat.h>

于 2016-02-20T15:20:17.207 回答
6

我已经在我的机器(Ubuntu 12.0.4)中尝试过这段代码。但是我没有收到像您一样的任何错误消息。

根据您的手册页,open()您可能丢失了#include <sys/stat.h>

于 2015-07-29T12:54:55.880 回答
0

手册页open(2)

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

请确认您拥有所需的每一项。

于 2018-10-06T12:17:25.790 回答