所以我正在尝试编写这个函数,该函数获取一个参数,告诉它是显示屏幕输入还是将其重定向到某个文件。 我是通过重定向stdout部分来做到的。 由于某种原因,open()函数中的标志无法识别,即使我根据需要进行了#include。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#define TRUE 1
#define FALSE 0
void writer(char* fileName);
void writerEmpty();
void writer(char* fileName)
{
char buffer[64];
int size = 64;
int fd;
read(0, buffer, size);
if (!strcmp("std", fileName))
{
close(1);
fd = open(fileName, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
}
write(1, buffer, size);
}
visual studio无法识别S_IRUSR
和S_IWUSR
标志,当我根本不使用它们时,open()返回-1(错误)。
救命?有人在吗? :)