- 论坛徽章:
- 0
|
大家知道linux/unix下有一个很常见的文件打开函数:open
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *path, int oflag, ... );
#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);
有一个疑问,如果我想对open函数做一些简单封装怎么做呢?
int xxx_open(const char *filename, int flag, ...)
{
int fd;
mode_t pmode;
/* BUG for call open(fn, O_CREAT|O_RDWR) */
if (flag & O_CREAT)
{
va_list ap;
va_start(ap, flag);
pmode = va_arg(ap, mode_t);
va_end(ap);
}
else
{
pmode = 0644;
}
if ((fd = open(filename, flag, pmode)) < 0)
{
....
return (-1);
}
return (fd);
}
这个封装是有问题的。但我想了很长时间也不知道怎么修改。哎!困惑啊!
|
|