我在Ubuntu和Raspberry PI上运行了一个简单的C应用程序。
需要定期写入日志文件,当从命令行以root(或sudo)运行时,它会完美地创建/写入日志文件。
日志文件位于/var/log/app-name/app-name.log中(其中app-name是我的应用程序的名称)。
首先检查文件夹是否存在,如果不存在则创建它。然后它打开创建/追加的日志文件并输出到它。
但是,当我从rc.local启动应用程序时,应用程序仍然可以完美地完成其他任务,读取远程telnet服务器,读取/写入本地mysql数据库等,但它永远不会创建/ var / log文件夹或写入日志文件,即使它已经退出(fopen返回0)。
我确信它会变得非常简单,但我不能指责它。
我尝试过setuid等,没有任何效果。
有什么想法吗?
测试&为日志创建文件夹就像这样。这在从命令行运行时有效,但在从rc.local
运行时有效void checkVarLogDir()
{
struct stat st = {0};
if (stat("/var/log/phone_log", &st) == -1)
{
mkdir("/var/log/phone_log", 0744);
}
}
从rc.local运行,如下所示:
/ path-to-app / phlog&
我也可以在这里添加fopen / fwrite / fclose,但是当它不是从rc.local运行时,它很简单。