当更改为将日志写入文件时,可执行文件不会在启动时运行

当更改为将日志写入文件时,可执行文件不会在启动时运行

我在启动时运行一个可执行文件,该可执行文件通过printf控制台打印日志,当服务运行时,我看到二进制文件在输出中运行,ps但不再打印到控制台。

因此,为了查看日志,我更改了应用程序,使其创建文件,但在更改后,可执行文件似乎不会在启动时运行,即使应该运行此可执行文件的服务正在运行。

在手动运行而不是在启动时运行时,创建和写入文件工作得非常好。

  1. 如何为启动时运行的可执行文件启用 printf 日志到控制台?我正在用来dprintf写一个文件
  2. 尽管服务正在运行,为什么应该创建并写入文件的可执行文件在启动时不会运行?

做了一个示例测试 - 当存在循环并且可执行文件被推送时,它在启动时运行,但一旦循环被注释掉,可执行文件就不再运行。

#define file1        "file1"
#define file2        "file2"
int CreateFiles()
{
    dprintf (1, "Creating files");
    int fd = open (file1, O_WRONLY | O_CREAT);
    if (fd < 0)
    {
        dprintf (1, "Failed to open the file descriptor");
        return -1;
    }

    fd = open (file2, O_WRONLY | O_CREAT);
    if (fd < 0)
    {
        dprintf (1, "Failed to open the file descriptor");
        return -1;
    }
  return 1;
}

int main(void)
{
   while(1);
   CreateFiles();
}

相关内容