
UNIX环境高级编程
a987860319
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
libcurl上传文件到服务器的几种方式
提交表单方式/*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | *原创 2016-04-01 20:25:24 · 14054 阅读 · 12 评论 -
制作一个Linux下炫酷吊炸天的log输出工具
先看一下最后的效果 先说一下上面打印的内容: 1. 最前面的是log输出的级别,现在有NOTICE、INFO、DEBUG、WARN、ERR 5个log输出等级。 2. 紧接着的是该条log输出的时间,前面的时间是秒,后面的时间是微妙。 3. 然后是这条打印语句所在的文件,函数和行号 4. 然后是具体打印的内容如何实现首先看一下其中的一个接口函数dsdl_err,这是一个可变参数的宏。可原创 2016-08-05 17:43:31 · 1950 阅读 · 0 评论 -
Linux下多线程教程
所有的Unix类系统都是多任务操作系统。unix允许一个用户同时运行多个进程,这是我们今天使用的最强大、最灵活的多任务编程模型之一。在传统的unix模式,进程都是通过fork()系统调用创建的。Fork()产生一个当前进程的拷贝。在子进程中fork()返回1,在父进程中fork返回子进程的pid。fork()通常使用方法:[do parent stuff]ppid = fork ();if (p原创 2016-08-08 22:51:38 · 795 阅读 · 6 评论 -
Linux日志系统解析
前言对于守护进程,因为它没有控制终端,所以不能往标准出错上面打印。 在很多工作站上,控制台设备运行一个窗口系统,我们不希望所有守护进程都写到控制台设备上。 我们也不希望每个守护进程都单独的写到一个文件里面。 对系统管理员来说,如果要去各个守护进程的文件中查看日志,将是一件很头疼的事情。 所以,我们需要集中的管理守护进程的出错信息。 因此Linux使用syslogd将所有的日志信息集中的管原创 2017-09-30 15:50:38 · 1412 阅读 · 0 评论 -
popen和pclose
我们经常会有这样的操作,创建一个连接到另一个程序的管道,然后读其输出端或向其输入端发送数据,为此标准I/O库提供了两个函数popen和pclose来简化这些步骤。 这两个函数实现的操作是:创建一个管道,fork一个子进程,关闭未使用的管道端,执行一个shell命令(popen);然后等待命令终止(pclose)。#include <stdio.h>/** * 函数popen先执行fork,然后原创 2017-10-21 09:54:56 · 409 阅读 · 0 评论 -
apue I/O多路转接,select与poll
I/O多路转接select传向select的参数告诉内核:我们所关心的描述符。对于每个描述符,我们所关心的状态(是否读一个给定的描述符?是否写一个给定的描述符?是否关心一个描述符的异常状态?)。愿意等待多长时间(可以永远等待,等待一个固定量时间,或完全不等待)。从select返回时,内核告诉我们:已经准备好的描述符的数量。对于读、写或异常这三个状态中的每一个,哪些描述符已经准备好。#i原创 2017-10-24 09:37:01 · 656 阅读 · 0 评论 -
Linux gettimeofday、timeradd、timercmp and example
gettimeofday/* 根据时域获取当前时间 */int gettimeofday(struct timeval *tv, struct timezone *tz);参数定义如下:struct timeval { time_t tv_sec; /* seconds */ suseconds_t tv_usec; /* microseco...原创 2018-04-17 10:07:53 · 3534 阅读 · 0 评论 -
pthread_cond_signal、pthread_cond_wait example
#include <stdlib.h>#include <stdio.h>#include <string.h>#include <signal.h>#include <pthread.h>#include <errno.h>/* compile with gcc -pthread pthread_cond.c ...原创 2018-04-12 17:34:31 · 425 阅读 · 0 评论 -
使用openssl进行AES 128 CTR 加密、解密
代码示例#include &amp;lt;stdlib.h&amp;gt;#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;string.h&amp;gt;#include &amp;lt;openssl/evp.h&amp;gt;void handleErrors(void){ ERR_print_error原创 2018-06-08 11:25:30 · 12408 阅读 · 2 评论 -
base64编码解码
定义和原理定义和原理如下链接:https://zh.wikipedia.org/wiki/Base64example#include <stdio.h>#include <stdlib.h>#include <string.h>static const unsigned char base64_table[65] = "ABCDEFG...原创 2018-07-10 09:21:25 · 388 阅读 · 0 评论 -
有名信号量的使用
sem.c//sem.c/* when compile,should link lib pthread.like this: $(CC) sem.c -o sem -lpthread*/#include <stdlib.h>#include <stdio.h>#include <fcntl.h>#include <sys/stat.h>#include <sys/semaphore.h原创 2015-12-06 21:07:20 · 1389 阅读 · 0 评论 -
unix:处理命令行参数
1、自己手动简单处理//简单的处理命令行参数方法#include <stdio.h>#include <unistd.h>#include <stdlib.h>enum http_parser_type { HTTP_REQUEST, HTTP_RESPONSE, HTTP_BOTH};void usage(const char* name) { fprintf原创 2015-11-25 22:34:32 · 948 阅读 · 0 评论 -
printf中的%.*s
#include <stdlib.h>#include <stdio.h>#include <string.h>void print(void* data, int len){ //从data地址开始,打印len长度的值 printf("data= %.*s\n", len, (char*)data);}int main (int argc, char *argv[]){原创 2015-11-28 23:32:21 · 787 阅读 · 0 评论 -
Linux之V4L2基础编程
本文内容来源于网络,本博客进行整理。1. 定义V4L2(Video For Linux Two) 是内核提供给应用程序访问音、视频驱动的统一接口。2. 工作流程:打开设备-> 检查和设置设备属性-> 设置帧格式-> 设置一种输入输出方法(缓冲 区管理)-> 循环获取数据-> 关闭设备。3. 设备的打开和关闭:#include int open(const c转载 2014-05-13 09:15:37 · 773 阅读 · 0 评论 -
unix环境高级编程——库函数的缓冲区
1.对于库函数,如果标准输出连到终端设备,则它是行缓冲的(遇到回车换行符或者是缓冲区满了才输出);否则是全缓冲的(缓冲区填满或者是程序运行结束了才输出)。2.程序运行结束时,会刷新所有的缓冲区。原创 2015-04-13 11:24:31 · 1300 阅读 · 0 评论 -
linux中qsort的使用
函数原型#include void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));参数说明:base:排序数组的起始地址nmemb:要排序的元素的个数size:单个元素的大小compar:用户自定义的比较两个元素大小的方法。int(*co原创 2015-04-16 11:28:10 · 3342 阅读 · 0 评论 -
使用srandom和random产生伪随机序列
函数原型#include <stdlib.h>long int random(void);void srandom(unsigned int seed);srandom 该函数传递下来的参数作为种子,用于random返回随机数。如果种子不变,那么每次random产生的随机序列也是一样的。如果不给srandom传递参数,则种子默认为1。random 使用种子产生随机序列,随机数的范围是0原创 2015-04-16 14:14:01 · 2156 阅读 · 0 评论 -
linux用c语言获取系统启动时长
思路是通过读取/proc/uptime获得系统启动时长。 使用命令cat /proc/uptime 通过man proc可以看到如下的信息: /proc/uptime:This file contains two numbers: the uptime of the system (seconds), and the amount of time spent in idle process原创 2015-04-21 22:57:00 · 4005 阅读 · 0 评论 -
unix高级编程:获取文件长度
#include <stdio.h>#include <stdlib.h>int main(int argh, char* argv[]) { char* filename = argv[1]; FILE* file = fopen(filename, "r"); if (file == NULL) { perror("fopen"); go原创 2015-11-25 22:30:12 · 863 阅读 · 0 评论 -
linux进程间通过管道通信实现简单的tftp
本程序基于进程间的管道通信实现了简单的tftp的功能。功能包括put:向服务器上传文件get:从服务器下载文件list:列出服务器文件列表help、?:查看支持的命令quit:退出登录先运行服务器端,在某个目录下创建一个公用的管道;然后运行客户端,创建自己的管道,并通过服务器通用的管道与服务器端完成握手。1.共用的头文件buf.h#ifn原创 2014-02-20 18:35:10 · 1104 阅读 · 0 评论