write()函数确实按预期工作

时间:2014-04-08 18:56:07

标签: c linux system

以下是我尝试在Linux下使用C编写文件的方法

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>

int main(int argc, char *argv[])
{
    printf("Sharing a file using fork() command.\n");


    int file;

    //man 2 open page
    errno = 0;
    file = open("/home/anu/Desktop/Codes/Share-File/bin/Debug/file.txt",O_WRONLY | O_APPEND);

    if(-1 == file)
    {
        printf("\nOpen() failed with error [%s]\n",strerror(errno));
        return 1;
    }
    else
    {
        printf("\nOpen() Successful\n");
        if (write(1, "This will be output to standard out\n", 36) != 36)
        {
            write(2, "There was an error writing to standard out\n", 44);
            return -1;
        }
    }

    return 0;
}

文件成功打开,但我没有附加我提供的数据。我哪里出错了?附:请不要指向使用fopen()等。我想仅使用write()函数来实现预期的结果。 感谢。

1 个答案:

答案 0 :(得分:1)

首先,最好使用标准fds STDIN_FILENOSTDOUT_FILENOSTDERR_FILENO的预定义常量。

此外,当您完成写入时,您必须close打开文件。无论如何:您实际上并没有写入您在此示例中打开的文件。您期望得到什么输出?