Linux Linux程序练习十七
小结:使用fputs()向文件写入数据,要想实时看到结果,需要使用fflush清空缓冲区
/*
* 题目:编写一个守护进程,每隔3秒钟将当前时间写入文件time.log,
* 要求:不能使用init_daemon系统调用。
* */ #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h> void gettime_now(char *ptime)
{
time_t tdata = ;
//获取当前系统时间
time(&tdata);
//定义时间结构体变量
struct tm *eventtime = NULL;
//将time_t类型转成struct tm指针类型
eventtime = localtime(&tdata);
//tm_year表示年份,从1900开始
int t_year = eventtime->tm_year + ;
//月份,月份从0开始
int t_mon = eventtime->tm_mon + ;
//日
int t_day = eventtime->tm_mday;
//小时
int t_hour = eventtime->tm_hour;
//分
int t_min = eventtime->tm_min;
//秒
int t_sec = eventtime->tm_sec;
sprintf(ptime, "%d-%d-%d %d:%d:%d\n", t_year, t_mon, t_day,
t_hour, t_min, t_sec);
} int main(void)
{
pid_t pid = fork();
if (pid == -)
{
perror("fork() err");
return -;
}
if (pid == )
{
//创建新的会话期
setsid();
//设置当前目录为根目录
chdir("/");
//设置目录权限
umask();
close(STDERR_FILENO);
close(STDIN_FILENO);
FILE *pfa = NULL;
pfa = fopen("/home/test/1/time.log", "a");
if (pfa == NULL)
{
perror("fopen() err");
return -;
}
//每隔3秒
int seconds = ;
while ()
{
seconds = ;
do
{
seconds = sleep(seconds);
} while (seconds > );
//获取当前时间
char timearr[] = { };
gettime_now(timearr);
strcat(timearr," \t\t打印时间\n\n");
printf("%s",timearr);
//写入文件
fputs(timearr, pfa);
//刷新缓冲区
fflush(pfa);
}
} else if (pid > )
{
exit();
}
return -;
}
.SUFFIXES:.c .o
CC=gcc
SRCS=hello.c
OBJS=$(SRCS:.c=.o)
EXEC=ser
SRCS1=tec01.c
OBJS1=$(SRCS1:.c=.o)
EXEC1=clt start:$(OBJS) $(OBJS1)
$(CC) -o $(EXEC) $(OBJS)
$(CC) -o $(EXEC1) $(OBJS1)
@echo "^_^-----OK------^_^"
.c.o:
$(CC) -Wall -g -o $@ -c $<
clean:
rm -f $(OBJS)
rm -f $(EXEC)
Linux Linux程序练习十七的更多相关文章
- 嵌入式linux应用程序移植方法总结
嵌入式linux应用程序移植方法总结 前段时间一直在做openCapwap的移植和调试工作,现在工作已接近尾声,编写本文档对前段工作进行一个总结,分享下openCapwap移植过程中的经验和感悟.江浩 ...
- 第六章第一个linux个程序:统计单词个数
第六章第一个linux个程序:统计单词个数 从本章就开始激动人心的时刻——实战,去慢慢揭开linux神秘的面纱.本章的实例是统计一片文章或者一段文字中的单词个数. 第 1 步:建立 Linu x 驱 ...
- Linux C程序内存空间
linux下内存空间布置: 一个典型的Linux C程序内存空间由如下几部分组成: 代码段(.text).这里存放的是CPU要执行的指令.代码段是可共享的,相同的代码在内存中只会有一个拷贝,同时这个段 ...
- linux应用程序地址布局,王明学learn
linux应用程序地址布局 在学习Linux应用程序开发时,经常会遇到如下概念:代码段.数据段.BSS段(Block Started by Symbol,又名:未初始化数据段).堆(heap)和栈(s ...
- linux应用程序开发-文件编程-系统调用方式
在看韦东山视频linux驱动方面有一些吃力,究其原因,虽然接触过linux应用程序编程,但是没有深入去理解,相关函数用法不清楚,正好看到国嵌视频对这一方面讲的比较透彻, 所以把学习过程记录下来,也作为 ...
- 嵌入式Linux应用程序开发详解------(创建守护进程)
嵌入式Linux应用程序开发详解 华清远见 本文只是阅读文摘. 创建一个守护进程的步骤: 1.创建一个子进程,然后退出父进程: 2.在子进程中使用创建新会话---setsid(): 3.改变当前工作目 ...
- linux c程序中获取shell脚本输出的实现方法
linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...
- 配置开发支持高并发TCP连接的Linux应用程序全攻略
http://blog.chinaunix.net/uid-20733992-id-3447120.html http://blog.chinaunix.net/space.php?uid=16480 ...
- Linux应用程序的地址布局
转载自:http://blog.csdn.net/embedded_hunter http://www.360doc.com/content/12/0405/00/1671317_200882538. ...
- 7 linux服务器程序规范
1. Linux服务器程序一般以后台进程形式运行.后台进程又称守护进程(daemon),它没有控制终端,因而不会意外接收到用户输入.父进程通常为init(PID为1的进程)2. Linux服务器程序常 ...
随机推荐
- 深入.NET和C#的小型汽车租赁系统的框架
前言:写这个小型系统之前呢,我们应该要猜测可能要用到哪些知识点. 那么对于这个小型系统:主要用到了如下的知识: 封装,集合(ArrayList和HashTable)和泛型和非泛型集合(泛型:List ...
- Windows 10 的音频和 MIDI API将统一
微软一统 Windows 10 的音频和 MIDI API 微软在夏季NAMM上的A3E大会上做了主题演讲,他们对Windows 10的音频和MIDI API都做了新的规划,开发者针对Windows ...
- python操作SQL
pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同 一.下载安装 pip3 install pymysql 二.操作使用 1.执行SQL #!/usr ...
- 奇妙的CSS之布局与定位
前言 关于布局与定位是Web前端开发里非常基础而又重要的部分.介绍相关知识的文章,很容易就可以找到.虽然,这方面的知识点不是很多,但我们如果不弄清楚,在运用时候往往会出现预料之外的布局,这些“意外”有 ...
- iOS 事件处理之UIResponder简介
在用户使用app过程中,会产生各种各样的事件 iOS中的事件可以分为3大类型:触摸事件.加速计事件.远程控制事件 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处 ...
- SDWebImage添加header
title: SDWebImage添加headerdate: 2016-03-07 17:32:57tags: SDWebImagecategories: IOS keywords: SDWebIma ...
- RMAN异机恢复遭遇ORA-01547、ORA-01152、ORA-01110错误案例
测试环境: 操作系统 : Red Hat Enterprise Linux ES release 4 (Nahant Update 4) VMWARE 数据库 : O ...
- Linux下解压超过4G的zip文件
从Windows平台通过FTP上传一个大小约为6G的zip文件到Linux系统(Oracle Linux Server release 5.7)上,解压过程中出现如下错误: 1: [root@gsp ...
- MS SQL Could not obtain information about Windows NT group/user 'domain\login', error code 0x5. [SQLSTATE 42000] (Error 15404)
最近碰到一个有趣的错误:海外的一台数据库服务器上某些作业偶尔会报错,报错信息如下所示: -------------------------------------------------------- ...
- Hive基本语法操练
建表规则如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...