#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

#define LOG_FILE "logfile.txt"

// 写日志的函数
void write_log(const char *message) {
    // 以附加模式打开文件,允许共享读取
    HANDLE hFile = CreateFile(
        LOG_FILE,
        GENERIC_WRITE,                // 写入权限
        FILE_SHARE_READ,             // 允许其他程序读取
        NULL,                         // 默认安全属性
        OPEN_ALWAYS,                  // 如果文件不存在则创建
        FILE_ATTRIBUTE_NORMAL,        // 一般文件属性
        NULL                          // 没有模板文件句柄
    );

    if (hFile == INVALID_HANDLE_VALUE) {
        fprintf(stderr, "Failed to open log file. Error: %lu\n", GetLastError());
        return;
    }

    // 定位到文件末尾
    SetFilePointer(hFile, 0, NULL, FILE_END);

    // 写入日志信息
    DWORD bytesWritten;
    WriteFile(hFile, message, strlen(message), &bytesWritten, NULL);
    WriteFile(hFile, "\n", 1, &bytesWritten, NULL);

    // 关闭文件句柄
    CloseHandle(hFile);
}

int main() {
    const char *logMessage = "This is a log message.";

    // 写入日志
    write_log(logMessage);

    printf("Log message written to %s\n", LOG_FILE);
    return 0;
}

说明:

  1. CreateFile 函数:用于打开或创建文件。使用 FILE_SHARE_READ 标志来允许其他应用程序在文件打开时读取该文件。

  2. 写入日志:首先定位到文件末尾,然后写入日志消息和换行符。

  3. 错误处理:代码中包含基础的错误处理,以确保文件成功打开和写入。

使用:

  1. 将代码保存为 .c 文件,例如 logger.c
  2. 在 Windows 下编译代码,可以使用 gcc 或其他支持的编译器:
    gcc logger.c -o logger
    
  3. 运行生成的可执行文件:
    ./logger
    
  4. 你可以在执行后查看 logfile.txt 文件。

发表评论

邮箱地址不会被公开。 必填项已用*标注