linux系统编程
申庆胜
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
O_ACCMODE
O_ACCMODE:读写文件操作时,用于取出flag的低2位O_RDONLY:只读打开O_WRONLY:只写打开O_RDWR:读写打开 可以很好的理解下面的程序: 1#include 2 #include 3 #include "ourhdr.h" 4 5 int 6 main(int argc, char *argv[]原创 2009-07-29 14:57:00 · 3539 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(八)—进程控制 (3)
四、执行新程序9.名称::exec功能:执行一个新程序头文件:#include 函数原形: int execl(const char *path,const char *arg,…);int execlp(const char *file,const c转载 2009-06-30 15:52:00 · 531 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(六)—时间和日期 (1)
一.文件的时间对每个文件保存三个时间字段,它们是: 1.名称::utime功能:修改文件的存取和修改时间头文件:#include #include 函数原形: int utime(const char *filename,const st转载 2009-06-30 14:23:00 · 458 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(四)—出错处理
1.名称::perror功能:该函数在stderr流中输出错误信息头文件:#include 函数原形: void perror(const char *message)参数:message 返回值:无转载 2009-06-30 14:20:00 · 535 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(一)—文件IO (2)
5.名称:write目标: 将内存中的数据写入文件。头文件:#include 函数原形:size_t write(int fd, const void *buf, size_t count)参数: fd 文件描述符转载 2009-06-30 14:14:00 · 740 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(七)—进程环境 (1)
一、主要内容:1.进程如何启动和退出的(main函数,初启函数,exit函数,atexit函数)。(1).Linux创建进程的唯一方法就是利用shell的fork系统调用。(2).编译C程序时,连接器会将初启函数和main函数一起装入内存形成可执行文件,指定该初起函数为该初启函数的开始执行点。(3).初启函数负责从UNIX SHELL获得命令行参数和系统的环境变量,将它们组织转载 2009-06-30 12:44:00 · 565 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十一)—终端IO (1)
1.什么是Linux的终端I/O,它分为几种类型。 终端是一种字符型设备,有多种类型,通常使用tty来简称各种类型的终端设备。终端特殊设备文件一般有以下几种: 串行端口终端(/dev/ttySn) ,伪终端(/dev/pty/),控制终端(/dev/tty) ,控制台终端(/dev/ttyn, /dev/console).1. 串行端口终端(Serial Port Term转载 2009-07-01 10:39:00 · 661 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十)—信号 (5)
11.名称::sigsuspend功能: 头文件:#include 函数原形:int sigsuspend(const sigset_t *sigmask);参数:sigmask 要替换的进程信号屏蔽字。返回值:原创 2009-07-01 10:10:00 · 626 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十)—信号 (4)
四、信号屏蔽字:有时候我们希望进程正确的执行,而不想进程受到信号的影响,比如我们希望上面那个程序在1秒钟之后不结束。这个时候我们就要进行信号的操作了。信号操作最常用的方法是信号屏蔽。信号屏蔽要用到下面的几个函数。sigemptyset,sigfillset,sigaddset,sigdelset,sigismember,sigprocmask。下面对他们分别进行讲解。 8转载 2009-07-01 09:56:00 · 639 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(九)—进程关系 (1)
一、进程组1.名称::getpgrp功能:得到进程的进程组id头文件:#include 函数原形:pid_t getpgrp(void);参数:无返回值:调用进程的进程组ID转载 2009-06-30 15:53:00 · 662 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十二)—高级IO (1)
一.记录锁1.记录锁的功能 当一个进程正在读或修改文件的某个部分时,它可以阻止其他进程修改同一文件区。我们不应该从字面上去理解记录锁,实际上它应该叫“区域锁”,因为它锁定的只是文件的一个(也可能是整个文件)。这个区域用来存放多用户的共享区。2.记录锁的分类 记录锁分为共享读锁和独占写锁,前者也叫做共享锁后者也叫做排他锁。3.加锁规则 如果一转载 2009-07-02 09:24:00 · 670 阅读 · 0 评论 -
链接程序和库指南
原文出自:http://docs.oracle.com/cd/E19253-01/819-7050/chapter3-13/index.html链接程序和库指南Previous: 装入其他目标文件Next: 获取新符号符号查找如果dlopen(3C) 获取的目标文件引用全局符号,则运行时链接程序必须从构成进程的目标转载 2014-01-16 18:28:12 · 954 阅读 · 0 评论 -
PCI总线驱动概要
在《Linux内核修炼之道》里,文章作者对如何使用Kconfig和Makefile定位内核源码有精彩的阐述。并且该作者还在《Linux那些事儿 之 我是PCI》系列文章中对X86架构下的PCI总线和设备驱动做了很详细的分析。由于工作需要,我在此基础上分析了ARM体系结构的PCI总线驱动,并把心得和笔记整理一下,或许对日后解析其他子系统有所帮助。以下涉及到的Linux内核源码均为2.6.23版本。转载 2013-07-19 17:19:02 · 1242 阅读 · 0 评论 -
“extern c”的含义
在c++调用c或者c调用c++时,头文件中声明的函数必须使用'extern "C"进行修饰,这样才能正常编译使用。可用于c和c++混合编程。(1) 被extern限定的函数或变量是extern类型的(2) 被extern "C"修饰的变量和函数是按照C语言方式编译和连接的;当c++编译器遇到该修饰符时在生成目标代码时,会把被修饰的函数和变量按照c语言习惯来生成标识符。以便被c程序能够正原创 2013-05-14 11:16:46 · 827 阅读 · 0 评论 -
ioctl函数详细分析
IPv4 和 IPv6 的网络接口操作使用套接字 ioctl 命令 级别: 中级Katiyar Manish (manish.katiyar@in.ibm.com), 软件工程师, IBM, Intel, Microsoft,HPShweta Gupta (shwetagupta@in.ibm.com), 高级软件工程师, IBM 2007 年 3 月 13 日了解更多关于套接字原创 2009-07-03 18:16:00 · 2903 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十三)—守护进程
守护进程也称精灵进程是生存期长的一种进程,它们常常在系统引导装入时启动,在系统管比时终止。精灵进程没有控制终端,所以它们是在后台运行的。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 所有精灵进程都以超级用户转载 2009-07-02 09:27:00 · 573 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十二)—高级IO (4)
四、存储映射I/O 存储映射I/O使一个磁盘文件与存储空间中的一个缓冲区相映射。于是当从缓冲区中取数据,就相当于读文件中的相应字节。与此类似,将数据存入缓冲区,则相应字节自动地写入文件。这样就可以在不使用read和write的情况下执行I/O。 6.名称::mmap功能:把I/O文件映射到一个存储区域中转载 2009-07-02 09:27:00 · 662 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十二)—高级IO (3)
4.名称::pselect功能:指行I/O多路转接 头文件:#include 函数原形:int pselect(int masfdp1,fd_set *restrict readfds,fd_set *restrict writefds,fd_set excep转载 2009-07-02 09:26:00 · 669 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十二)—高级IO (2)
二.I/O多路转接 如果我们想从多个文件描述符读或写数据,如果我们用以前学过的函数(read,write等)去处理可能会阻塞在一个文件描述符上,不能处理其他的文件描述符。那是因为我们以前学的I/O处理函数,都是阻塞的I/O处理函数,它们的特点是,如果缓冲区里有数据它们就会把数据写到文件中,如果缓存区没有数据他们就会等待(阻塞)直到有数据可读。这就造成了他们无法对多个文件描述符进行操转载 2009-07-02 09:25:00 · 594 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十)—信号 (3)
4.名称::alarm功能:set an alarm clock for delivery of a signal头文件:#include 函数原形:unsigned int alarm(unsigned int seconds);参数:转载 2009-07-01 09:35:00 · 668 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十)—信号 (2)
二、不可靠信号安装和发送函数。1.名称::signal功能:信号安装(设置信号关联动作)头文件:#include 函数原形:typedef void (*sighandler_t)(int);sighandler_t signal(int signum,s转载 2009-07-01 09:33:00 · 806 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(二)—目录和文件 (3)
六、文件的属性11名称:stat/fstat/lstat目标: 得到文件的属性。头文件:#include #include #include 函数原形:int stat(const char *file_name,struct stat *buf)i原创 2009-06-30 14:19:00 · 515 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(七)—进程环境 (2)
四、进程空间3.名称::malloc/calloc/realloc/free功能:allocate and free dynamic memory头文件:#include 函数原形: void *calloc(size_t nmemb,size_t size原创 2009-06-30 12:45:00 · 550 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十)—信号(1)
1、信号本质与来源信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,转载 2009-07-01 09:32:00 · 761 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(五)—系统文件和信息 (2)
二、ect/group文件4.名称::getgrgid/getgrnam功能:get group file entry头文件:#include #include 函数原形: struct group *getgrnam(const char *name);原创 2009-06-30 14:22:00 · 670 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(二)—目录和文件 (2)
四、文件的链接6.名称:link目标: 创建一个文件的新链接头文件:#include 函数原形:int link(const char *oldpath,const char *newpath);参数: oldpath 原始链转载 2009-06-30 14:17:00 · 1139 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(二)—目录和文件(1)
一、目录的打开和关闭 1. 名称:opendir目标: 打开一个目录。头文件:#include #include 函数原形:DIR *opendir(const char *name)参数: name 目录名原创 2009-06-30 14:15:00 · 921 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(七)—进程环境 (3)
8. 名称::unstenv功能:删除环境变量头文件:#include 函数原形: void unstenv(const char *name);参数:name 变量名返回值:无原创 2009-06-30 12:46:00 · 509 阅读 · 0 评论 -
[APUE2nd学习笔记]Ch5. Standard I/O Library
fwide: stream orientation buffering types: full buffered, line buffered, unbuffered most implementation: stderr is unbuffered, terminal devices are linue原创 2009-08-06 13:01:00 · 630 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(二)—目录和文件 (4)
13.名称:umask目标: 为进程文件方式创建屏蔽字头文件:#include #include 函数原形:mode_t umask(mode_t cmask);参数: cmask返回值: 以前的文件原创 2009-06-30 14:19:00 · 697 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(五)—系统文件和信息 (1)
一、etc/passwd文件 1.名称::getpwuid/getpwnam功能:Getpassword file entry头文件:#include 函数原形: struct passwd *getpwuid(uid_t uid);struct p转载 2009-06-30 14:21:00 · 550 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(八)—进程控制 (1)
一、进程ID1.名称::getpid功能:获得进程id. 头文件:#include 函数原形: pid_t getpid(void);参数:无返回值:进程id.转载 2009-06-30 14:26:00 · 476 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(六)—时间和日期 (2)
4.名称::gmtime/localtime功能:transform date and time头文件:#include 函数原形: struct tm *gmtime(const time_t *calptr)struct tm *locatltime(cons转载 2009-06-30 14:23:00 · 510 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(一)—文件IO (1)
一、打开/关闭文件1 名称:open目标: 打开一个文件。头文件:#include #include #include 函数原形:int open(const char * pathname,int flags);int open(const c转载 2009-06-30 14:11:00 · 562 阅读 · 0 评论 -
什么是errno
errno是什么?为防止和正常的返回值混淆,系统调用并不直接返回错误码,而是将错误码放入一个名为errno的全局变量中。如果一个系统调用失败,你可以读出errno的值来确定问题所在。errno不同数值所代表的错误消息定义在errno.h中,你也可以通过命令"man 3 errno"来察看它们。需要注意的是,errno的值只在函数发生错误时设置,如果函数不发生错误,errno的值就无定义,并不会被置原创 2009-06-30 10:05:00 · 877 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(十一)—终端IO (2)
字段标志说明c_cflagCCTS_OFLOW输出的CTS流控制 CIGNORE忽略控制标志 CLOAL忽略调制解调器状态行 CREAD启用接收装置转载 2009-07-01 10:40:00 · 559 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(九)—进程关系 (2)
二、会话4.名称::setsid功能:建立一个会话头文件:#include 函数原形:pid_t setsid(void);参数:无返回值:若成功则返回进程组ID,若出错则返回-1。转载 2009-06-30 15:53:00 · 555 阅读 · 0 评论 -
函数fork与vfork的区别与联系详解
创建一个新进程的方法只有由某个已存在的进程调用fork()或vfork(),当然某些进程如init等是作为系统启动的一部风而被内核创建的。1.fork函数介绍#include #include pid_t fork (void );正确返回:父进程中返回子进程的进程号;子进程中返回0;(单调用双返回函数)错误返回:-1;子进程是父进程的一个拷贝。具体说,子进程从父进程那得到了数据段和堆栈段转载 2009-06-30 14:41:00 · 604 阅读 · 0 评论 -
UNIX环境高级编程读书笔记(八)—进程控制 (2)
6.名称::vfork功能:创建一个进程头文件:#include #include 函数原形: pid_t vfork(void);参数:无返回值:进程id.转载 2009-06-30 14:35:00 · 474 阅读 · 0 评论 -
usb设备在sys子系统中的表示
首先,看一下/sys/bus/usb/devices/usb3下的目录结构 说明:usb总线上每个设备都以root hub的编号作为其名字的第一个号码,这个号码后跟着一个“-”字符还有设备所插入的端口号(port)。(3-0:1.0中3为root hub的编号,3-0表示设备所接入的root hub编号为3,插入到3号root hub的0端口。 “:”后跟usb配置(config转载 2014-10-23 13:45:15 · 1345 阅读 · 0 评论
分享