您的位置:首页 > 其它

★实验 8-1 1. 创建一个守候进程。并为自己创建独立的日志文件。 2. 每隔 1s 向日志文件中写入如下信息: a) 未使用的内存大小(MemFree) 可以从/proc/meminf

2017-07-16 21:25 615 查看
★实验 8-1
1. 创建一个守候进程。并为自己创建独立的日志文件。
2. 每隔 1s 向日志文件中写入如下信息:
a) 未使用的内存大小(MemFree)
可以从/proc/meminfo 获取

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
void init_deamon(void)
{
int pid;
int i;

if(signal(SIGCHLD,SIG_IGN) == SIG_ERR){
printf("Cant signal in init_daemon.");
exit(1);
}
if(pid=fork())
exit(0);
else if(pid< 0){
perror("fail to fork1");
exit(1);
}

setsid();

if(pid=fork())
exit(0);
else if(pid< 0)
exit(1);

for(i=0;i< getdtablesize();++i)
close(i);
chdir("/tmp");
umask(0);
return;
}
float get_memfree()//从文件/proc/meminfo中读出memfree的值
{
FILE* fp;
char buffer[1024];
size_t bytes_read;
char* match;
float memfree;

fp = fopen ("/proc/meminfo", "r");
bytes_read = fread (buffer, 1, sizeof (buffer), fp);
fclose (fp);
buffer[bytes_read] = '\0';
match = strstr (buffer, "MemFree");
if (match == NULL)
return 0;
sscanf (match, "MemFree : %f", &memfree); //读取
return memfree;
}
int main()
{
FILE *fp;
init_deamon();

while(1)
{
sleep(1);
if((fp=fopen("print_memfree","a")) >=0)
{
fprintf (fp,"MemFree now is: %4.0f MHz\n", get_memfree ());
fclose(fp);
}
}
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐