#include<stdio.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <syslog.h>
int main(int argc, const char *argv[]){
pid_t pid, sid;
int i, fd;
char *buf = "This is a Daemon\n";
pid = fork();
if(pid < 0){
printf("fork error\n");
return -1;
}
else if(pid > 0){
exit(0);
}
else{
openlog("daemon_syslog", LOG_PID, LOG_DAEMON);
if((sid = setsid()) < 0){
syslog(LOG_ERR, "%s\n", "setsid");
exit(1);
}
if((sid = chdir("/")) < 0){
syslog(LOG_ERR, "%s\n", "chdir");
exit(1);
}
umask(0);
for(i = 0; i < getdtablesize(); i++){
close(i);
}
if((fd = open("/tmp/daemon.log", O_CREAT|O_WRONLY|O_TRUNC, 0600)) < 0){
syslog(LOG_ERR, "open");
exit(1);
}
syslog(LOG_INFO, "%s\n", "open daemon.log");
while(1){
write(fd, buf, strlen(buf));
sleep(5);
}
close(fd);
closelog();
}
return 0;
}
运行文件,如果打开成功,会向daemon.log中写入“This is a daemon“
如图:
输入命令为:
tail /tmp/daemon.log
运行文件,如果daemon.log打开成功,同时会向系统日志写入信息消息“open daemon.log"
查看系统日志,如图:
命令:
tail /var/log/syslog
声明:
上述查看/tmp/daemon.log和打开系统日志文件均需在管理员权限下才能打开成功
两种方法:
①进入到管理员账户,如图二所示,linux的系统管理员应该都是叫Linux。然后执行访问系统日志命令。
②同样进入到系统管理员账户Linux,然后设置你原本账户为管理员,以我的账户“han0117”为例
su linux
//进入管理员账户
sudo usermod -aG sudo han0117
//设置原本账户为管理员
su hano117
//重新进入账户,这时已经是管理员了
tail /var/log/syslog //查看系统日志
或者 tail /tmp/daemon.log //查看写入文件