Linux编程
文章平均质量分 72
xkey
AC
展开
-
Linux GCC编译环境下的两个字符串函数——memmove、memcpy
1、函数简介和说明 1.1 memmove 原型:extern void *memmove(void *dest, const void *src, unsigned int count); 用法:#include 功能:由src所指内存区域复制count个字节到dest所指内存区域。 说明:src和dest所指内存区域可以重叠,但复制原创 2012-12-06 02:02:02 · 2434 阅读 · 0 评论 -
APUE学习笔记——第六章系统数据文件和信息
1、口令文件该文件主要是针对unix中的/etc/passwd文件,该文件中存储用户名、用户密码、用户ID、用户主组ID,用户的昵称、用户的家目录、用户Shell这7个信息,但是用户密码现在已经不存储在该文件下,因为该文件所有人都能有读权限,所以不安全,密码改存在/etc/shadow文件中。Linux中该文件的数据形式:xkey:x:700:100:xkey's color:/home/原创 2013-03-23 18:15:06 · 1553 阅读 · 0 评论 -
APUE学习笔记——第七章 进程环境
1、main函数原型:int main(int argc, char *argv[]) 其中argc是命令行参数的数目,argv是指向参数的各个指针构成的数组。main函数的命令行参数代码如下:#include #include int main(int argc,char *argv[]){ int i; for(i = 0 ; i < argc ; i ++原创 2013-03-24 14:18:32 · 992 阅读 · 0 评论 -
APUE学习笔记——第八章 进程控制
本章的重点内容比较多,fork函数,wait和waitpid函数,exec函数,system函数等。1、进程标识符#include pid_t getpid(void); //调用进程的进程IDpid_t getppid(void); //调用进程的父进程IDgid_t getgid(void); //调用进程的实际组IDgid_t getegid(v原创 2013-03-24 19:11:42 · 1464 阅读 · 0 评论 -
APUE学习笔记——第十章 信号
1、信号信号是软件中断,很多比较重要的应用程序都需要处理信号,信号提供了一种处理异步事件的方法,例如:终端用户键入中断键,则会通过信号机制停止一个程序。每个信号都有一个名字,这些名字都是以SIG开头,在头文件中,信号都被定义为正整数。很多条件可以产生信号:(1)当用户按某些终端键时,引发终端产生的信号。按Ctrl+C键,通常产生SIGINT中断信号(2)硬件异常产生信号。例原创 2013-03-26 16:06:23 · 1149 阅读 · 0 评论 -
APUE学习笔记—— 信号实现系统sleep和system函数,解决进程竞争实例
1、实现系统sleep函数此函数使调用进程被挂起,直到满足下列条件之一:(1)已经经过seconds所指定的墙上时钟时间(2)调用进程捕捉到一个信号并从信号处理程序返回。以下的可靠实现并没有考虑到两个alarm交互作用的情况可靠实现如下:#include #include #include #include void sig_alarm(){}int slee原创 2013-03-26 17:06:19 · 1725 阅读 · 0 评论 -
Linux 信号 sigprocmask和suspend函数
先简要概括下,有时间在详细写。sigprocmask函数功能:阻塞一个信号集,即用来保护一个临界区不受信号集里的信号影响,不过可以用sigpending函数来保存在此临界区代码执行期间收到被阻塞的信号,待临界区执行完后执行相应动作。sigsuspend函数功能:挂起进程,直到捕捉到一个信号。原创 2012-12-25 22:39:59 · 1356 阅读 · 0 评论 -
APUE学习笔记——第十一章 线程
典型的UNIX进程可以看成只有一个控制线程:一个进程在同一时刻只能做一件事情。有了多个控制线程之后,在程序设计时可以把进程设计成在同一时刻能够做不止一件事,每个线程处理各自独立的任务。使用线程有很多好处:(1)、通过为每种事件类型的处理分配单独的线程,能够简化处理异步事件的代码。(2)、多个线程自动地可以访问相同的存储地址空间和文件描述符(3)、将一个问题分解为多个程序,改善整个程序的原创 2013-03-28 16:27:51 · 1193 阅读 · 0 评论 -
APUE学习笔记——第十六章 网络IPC:套接字
1、套接字描述符套接字是通信端点的抽象,与应用程序要使用文件描述符访问文件一样,访问套接字也需要用套接字描述符,套接字描述符在UNIX系统是用文件描述符实现的,许多文件描述符函数(如read write)都可以处理套接字描述符。创建一个套接字,调用socket函数#include int socket(int domain,int type,int protocol)//若成功返回原创 2013-04-14 15:25:11 · 1251 阅读 · 0 评论 -
APUE学习笔记——标准I/O库
1、标准输入、输出、错误在#include 头文件下有三个文件描述符STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO本章也有三个文件指针,在#include头文件中,分别是stdin,stdout,stderr。2、格式化I/O函数2.1 格式化输入#include int scanf(const char *format, ...);//i原创 2013-03-22 17:10:40 · 951 阅读 · 0 评论 -
XSI IPC——System V消息队列
System V消息队列1、key_t键和ftok函数三种类型的System V IPC使用key_t值作为它们的名字,头文件把key_t这个数据类型定义为一个整数。函数ftok把一个已存在的路径名和一个整数标识符转换成一个key_t值,称为IPC键。#include key_t ftok(const char* pathname, int id);该函数把从pathnam原创 2013-04-05 15:46:58 · 1772 阅读 · 0 评论 -
APUE学习笔记——第四章 文件和目录
1、stat、fstat、lstat函数#includeint stat(const char *pathname, struct stat *buf)int fstat(int filedes, struct stat *buf)int lstat(const char *pathname, struct stat *buf)stat与lstat函数都需要给出文件的绝对路径,原创 2013-03-21 13:16:24 · 1084 阅读 · 0 评论 -
Linux 多线程同步之哲学家用餐问题
问题描述:有五个哲学家公用一张餐桌,分别坐在周围的五张椅子上,在餐桌上有五个碗和五只筷子,他们的生活方式是交替地进行思考和用餐。平时,一个哲学家进行思考,饥饿时便试图拿取其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐,进餐完毕,放下筷子继续思考。(计算机操作系统 第三版)书上为代码:Var chopstick: array[0,...,4] of semaphore;repea原创 2012-12-17 15:19:21 · 7277 阅读 · 0 评论 -
Linux 进程间通信——消息队列实现双向通信
函数: key_t ftok(const char *filename, int proj_id);通过文件名和项目号获得System V IPC键值(用于创建消息队列、共享内存所用)proj_id:项目号,不为0即可返回:成功则返回键值,失败则返回-1函数: int msgget(key_t key, int msgflg);key:键值,当为IPC_PRIVATE时原创 2012-12-21 19:37:37 · 6358 阅读 · 0 评论 -
关于CentOS6.0 新增用户后出现passwd: 鉴定令牌操作错误
今天在CentOS环境下通过useradd -u 700 -g users somebody来新增一个普通帐号,然后使用passwd somebody命令来为该新用户添加密码,但是始终报passwd: 鉴定令牌操作错误。下面对该错误可能出现的三种情况进行分析:第一种:/usr/bin/passwd 的权限中没有添加s即SUID特殊权限 即:-rwxr-xr-x. 1原创 2013-03-09 19:35:02 · 9695 阅读 · 3 评论 -
APUE学习笔记——第十二章 线程控制
本章学习控制线程行为方面的详细内容,在上章中对线程属性和同步原语属性都取其默认行为,接下来将介绍同一进程中的多个线程之间如何保持数据的私有性,最后讨论基于进程的系统调用如何与线程进行交互。1、线程限制: Single Unix Specification定义了与线程操作有关的一些限制,和其他的限制一样,可以通过sysconf来查询。和其它的限制使用目的一样,为了应用程序的在不同操作 系原创 2013-03-29 22:14:29 · 1499 阅读 · 0 评论 -
APUE学习笔记——第十三章 守护进程
1、编程规则(1)首先调用umask将文件模式创建屏蔽字设置为0.由继承得来的文件模式创建屏蔽字可能会拒绝设置某些权限。例如:若守护进程要创建一个组可读、写的文件,而继承的文件模式创建屏蔽字可能屏蔽了这两种权限,于是所要求的组可读、写就不能起作用。(2)调用fork,然后使父进程退出(exit)。这样做实现了下面几点:第一,如果该守护进程是作为一条简单shell命令启动的,那么父进程终止使原创 2013-03-31 18:28:21 · 1856 阅读 · 0 评论 -
APUE学习笔记——第十四章 高级IO
1、非阻塞IO低速系统调用是可能会使进程永远阻塞的一类系统调用,包括:(1)如果某些文件类型(管道、终端设备)的数据并不存在,则读操作可能会使调用者永远阻塞(2)如果数据不能立即被上述同样类型的文件接受,则写操作也会使调用者永远阻塞(3)在某种条件发生之前,打开某些类型的文件会被阻塞(4)对已经加上强制性记录锁的文件进行读、写(5)某些ioctl操作(6)某些进程间通信原创 2013-04-01 21:38:41 · 1389 阅读 · 0 评论 -
APUE学习笔记——第十五章 进程间通信
进程间通信IPC(InterProcess Communication)是指能在两个进程间进行数据交换的机制。1、管道管道是UNIX系统IPC的最古老形式,并且所有UNIX系统都提供此通信机制。管道有下面两种局限性:(1)历史上,它们是半双工的,现在某些系统提供全双工管道(2)它们只能在具有公共祖先的进程之间使用。通常,一个管道由一个进程创建,然后该进程调用fork,此后父子进程之原创 2013-04-02 23:58:14 · 1213 阅读 · 0 评论 -
APUE学习笔记——第三章文件I/O
1、文件描述符:意思就是unix 环境下用open函数打开一个文件,正确执行后会返回个整型数值,这个就叫文件描述符。(个人理解的,解释可能完全不对) 基本的三种文件描述符:STDIN_FILENO (0)标准输入,STDOUT_FILENO(1) 标准输出,STDERR_FILENO(2) 标准错误输出。 常量的定义基本上都在头文件中。2、函数介绍:原创 2013-03-20 21:39:06 · 1156 阅读 · 0 评论 -
APUE学习笔记——socket通信 阻塞IO
服务器端:#include #include #include #include #include #include #include #include #include #define BACKLOG 10int main(){ struct sockaddr_in server_sockaddr,client_sockaddr; int sockfd原创 2013-04-14 17:48:29 · 1453 阅读 · 0 评论