我在启动时运行一个可执行文件,该可执行文件通过printf
控制台打印日志,当服务运行时,我看到二进制文件在输出中运行,ps
但不再打印到控制台。
因此,为了查看日志,我更改了应用程序,使其创建文件,但在更改后,可执行文件似乎不会在启动时运行,即使应该运行此可执行文件的服务正在运行。
在手动运行而不是在启动时运行时,创建和写入文件工作得非常好。
- 如何为启动时运行的可执行文件启用 printf 日志到控制台?我正在用来
dprintf
写一个文件 - 尽管服务正在运行,为什么应该创建并写入文件的可执行文件在启动时不会运行?
做了一个示例测试 - 当存在循环并且可执行文件被推送时,它在启动时运行,但一旦循环被注释掉,可执行文件就不再运行。
#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();
}