gpt4 book ai didi

c - 我的守护程序代码在终端中完美执行,但未创建日志文件

转载 作者:行者123 更新时间:2023-11-30 17:47:54 28 4
gpt4 key购买 nike

进程的 pid 正在终端中显示,但日志文件未在根目录中创建。请仔细检查这段代码并告诉我缺少什么。

终端输出:

process_id of child process 5611 

来源如下。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <sys/inotify.h>
int main(int argc, char* argv[])
{
FILE *fp= NULL;
pid_t process_id = 0;
pid_t sid = 0;
int fd,wd,i=0,len=0;
char pathname[100],buf[1024];
process_id = fork();
if (process_id < 0)
{
printf("fork failed!\n");
exit(1);
}
if (process_id > 0)
{
printf("process_id of child process %d \n", process_id);
// return success in exit status
exit(0);
}
umask(0);
sid = setsid();
if(sid < 0)
{
exit(0);
}
chdir("/");
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
fp = fopen ("log.txt", "w+");
fprintf(fp, "Logging info...\n");
fflush(fp);
fclose(fp);
sleep(1);
struct inotify_event *event;

fd=inotify_init();
wd=inotify_add_watch(fd,"/osa",IN_ALL_EVENTS);
while(1)
{
i=0;
len=read(fd,buf,1024);
fp = fopen ("log.txt", "w+");
fflush(fp);
while(i<len)
{
event=(struct inotify_event *) & buf[i];
if(event->mask & IN_OPEN)
{
fprintf(fp,"%s:was opened\n",event->name);
}

if(event->mask & IN_MODIFY)
{
fprintf(fp,"%s:file is modified",event->name);

}
if(event->mask & IN_DELETE)
{
fprintf(fp,"%s:was deleted\n",event->name);
}
i+=sizeof(struct inotify_event)+event->len;
}
fclose(fp);
}
return (0);
}

最佳答案

正在创建日志文件。您需要以 root 身份运行代码,因为日志文件在“/”目录中打开,通常只有 root 可以访问。

关于c - 我的守护程序代码在终端中完美执行,但未创建日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18773105/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com