
Linux Program
kimoli
十多年的软件开发经历,在应用程序,网络应用,图像处理,算法,手机应用有多项目经验。代码质量高。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
内存管理
C语言用malloc, calloc, realloc和free函数提供了对动态内存分配的支持。函数分配没有被初始化过的内存块。#include void *malloc(size_t size);分配并初始化内存块void *calloc(size_t nmemb, size_t size);改变以前分配的内存块的大小void *realloc(void *p原创 2012-07-05 15:00:05 · 179 阅读 · 0 评论 -
线程
线程线程是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源。clone和fork一样,可以生成一个子进程,但可以指定哪些进程资源是共享的。#include int clone(int (*fn)(void*),void *child_stack,int flags, void *arg);clone主要是为了实现Linux的pthread库。pth原创 2012-07-03 14:44:41 · 202 阅读 · 0 评论 -
进程
进程一个进程是一个正在执行的程序的实例。一个进程由如下元素组成:程序的上下文context,它是程序的当前执行的状态程序的当前目录,访问的文件,访问权限内存和其他分配级进程的系统资源。内核使用进程来控制对CPU和其它系统资源的访问。内核的调度负责在所有的进程间分配CPU执行时间,称为时间片time slice。进程有进程号 process ID, PID和它的父进程原创 2012-07-03 13:34:15 · 201 阅读 · 0 评论 -
信号
信号信号是硬件中断的软件模拟,进程在执行是,几乎在任何时刻都会发生事件,这种不可预测性意味着信号是异步的。每个信号名都以SIG开头。对应于正整数,称为信号量signal number,定义在头文件中。当进程收到一个信号后,它可以对信号采取:忽略,捕获处理,允许执行信号的默认操作。发送信号使用kill命令或kill函数。捕获信号,每个进程都原创 2012-07-03 14:00:27 · 177 阅读 · 0 评论 -
文件操作
文件描述符是很小的正数,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。每个进程启动时都打开3个文件:标准输入,标准输出,标准出错,stdin stdout stderr。对应的文件描述符是0,1,2。OPEN(2) System callsopen, creat - open and possibly create a file or device原创 2012-06-26 14:44:58 · 143 阅读 · 0 评论 -
select - synchronous I/O multiplexing
select同步I/O多路复用。多路转接 multiplexing。#include #include #include #include int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);int pse原创 2012-07-02 09:40:47 · 332 阅读 · 0 评论 -
输入输出
#include int printf(const char* format,...);int fprintf(FILE *stream, const char *format,...);int sprintf(char *str, const char *format,...);int snprintf(char *str,size_t size, const char原创 2012-07-02 13:14:11 · 154 阅读 · 0 评论 -
目录
#include 当前目录char* getcwd(char*buf, size_t size);改变当前目录int chdir(const char *path);int fchdir(int fd);#include 创建目录int mkdir(const char* pathname,mode_t mode);删除目录int rmdir(con原创 2012-07-02 13:04:55 · 150 阅读 · 0 评论 -
daemon守护进程
daemon守护进程守护进程是一个后台进程,不能够控制终端,所以任何输出,无论是向标准出错设备stderr还是向标准输出设备stdout的输出都需做特别处理。守护进程一般在系统启动时启动,它的父进程是init进程。创建守护进程1在父进程执行fork然后让父进程退出。2在子进程中使用setsid调用创建新的会话。3让根目录成为子进程的当前工作目录。4设置进程的umask为0。原创 2012-07-06 15:09:02 · 191 阅读 · 0 评论 -
X Windows
X Windows基于一种客户机/服务器的思想,它将显示和事件处理功能从应用程序中分享出来。相反,一个客户端应用程序通过套接口接口和X服务器进行通信。客户机和服务器之间的通信通过一个称为Xlib的低层接口来执行。X Windows程序建立并显示一个窗口需要经过几个基本步骤。1首先需要打开一个到X服务器的连接,用API调用XOpenDisplay完成。2然后使用DefaultSc原创 2012-07-09 16:08:18 · 273 阅读 · 0 评论 -
终端接口 tty
终端接口POSIX.1定义了一个查询和操纵终端的标准接口,termios#include struct termios{tcflag_t c_iflag;tcflag_t c_oflag;tcflag_t c_cflag;tcflag_t c_lflag;cc_t c_line;cc_t c_cc[NCCS];speed_t c_ispeed;spe原创 2012-07-09 16:07:56 · 355 阅读 · 0 评论 -
ctime - transform data and time to broken-down time or ASCII
CTIME(3)ctime - transform data and time to broken-down time or ASCII#include char *asctime(const struct tm *tm);char *asctime_r(const struct tm *tm, char *buf);char *ctime(const原创 2012-06-26 14:44:25 · 196 阅读 · 0 评论 -
驱动程序的类型
驱动程序的类型静态链接的内核设备驱动程序,直接编译和链接在内核中,静态链接的模块,一旦编译进入了内核,就始终附加在内核上,直到重新编译内核为止。可加载内核模块loadable kernel modules, LKM能够被加载和卸载而不必重新链接内核,而且最重要的是,不需要重新启动你的计算机,这就能让你动态地配置系统。共享库,在有些情况下,驱动程序可以作为一个共享库来实现,但如果驱动程序原创 2012-07-09 16:08:41 · 368 阅读 · 0 评论 -
perror - print a system error message
PERROR(3) Library functionsperror - print a system error message#include void perror(const char *s);#include const char *sys_errlist[];int sys_nerr;perro向标准出错输出一条字符串。原创 2012-06-24 14:40:12 · 172 阅读 · 0 评论 -
system - execute a shell command
SYSTEM(3)system - execute a shell command#include int system(const char *string);执行shell命令。通过调用/bin/sh -c string,执行命令然后返回。在执行命令中,SIGCHLD阻塞,SIGINT SIGQUIT被忽略。返回命令的状态,或者-1表示出错。原创 2012-06-24 14:12:39 · 222 阅读 · 0 评论 -
umask - set file creation mask - linux programmer's manual
Linux Programmer's Manualumask (2)set file creation mask#include #include mode_t umask(mode_t mask);设置umask值为mask&0777。其实就是指定要去掉哪些权限。比如umask的值为022就是指去掉group和other的写权限(2),那么创建的文件权限就原创 2012-06-24 14:11:45 · 337 阅读 · 0 评论 -
进程间通信 - interprocess communication, IPC
进程间通信interprocess communication, IPC管道,无名管道和有名管道,它们是和内存中的一个索引点相关联的两个文件描述符。创建管道#include int pipe(int filedes[2]);FIFOint mkfifo(const char *pathname, mode_t mode);共享内存创建共享原创 2012-07-05 15:50:38 · 694 阅读 · 0 评论