Linux 系统编程
文章平均质量分 58
Linux 系统编程
涂作权的博客
To do what I want to do!
展开
-
PCB task_struct 数据结构 (转:http://blog.csdn.net/jurrah/article/details/3965437)
在linux 中每一个进程都由task_struct 数据结构来定义. task_struct就是我们通常所说的PCB.她是对进程控制的唯一手段也是最有效的手段. 当我们调用fork() 时, 系统会为我们产生一个task_struct结构。然后从父进程,那里继承一些数据, 并把新的进程插入到进程树中, 以待进行进程管理。因此了解task_struct的结构对于我们理解任务调度(在linu转载 2014-09-21 11:01:52 · 2251 阅读 · 0 评论 -
1.进程间的关系:终端,网络设备
1终端在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(ControllingTerminal),在讲进程时讲过,控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。默认情况下(没有重定向),每个进程的标准输入、标准输出和标准错误输出原创 2014-09-21 01:27:03 · 1280 阅读 · 0 评论 -
1.信号处理之:kill(),alarm(),pause()函数
1查看信号的方式:man 7 signal,通过这个命令可以查看到所有信息。2查看信号kill -l注意,后面的32个信号表示的实时信号。 会发现一个规律,前32种信号会有各种不同的名称,后32种会以“SIGRTMIN”或者“SIGRTMAX”开头,前者是从unix继承下来的信号,称为不可靠信号(也称为非实时信号),后者为了解决“不可原创 2014-09-21 01:13:51 · 1874 阅读 · 0 评论 -
2Makefile
1关于Makefile,在编写Makefile的时候,Makefile这个名称第一个字母要大写。并且必须是Makefile.一个Makefile就相当于:#目标:依赖(条件)# 命令 à注意这里前面是一个tab2案例:A:创建一个项目calc,案例项目结构如下:B编写mul.cC编写sub.原创 2014-09-20 23:55:56 · 1080 阅读 · 0 评论 -
6进程原语:wait()和waitpid()函数
1 wait/waitpid僵尸进程:子进程退出,父进程没有回收子进程资源(PCB),则子进程变成僵尸进程孤儿进程:父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为1号进程init进程,称为init进程领养孤儿进程2依赖的头文件#include #include 3函数声明pid_t wait(int原创 2014-09-20 23:41:59 · 2314 阅读 · 0 评论 -
2信号处理之:信号产生原因,进程处理信号行为,信号集处理函数,PCB的信号集,sigprocmask()和sigpending(),信号捕捉设定,sigaction,C标准库信号处理函数,可重入函数,
1信号产生原因2.进程处理信号行为manpage里信号3中处理方式:SIG_IGNSIG_DFL 默认Term动作a signal handling function进程处理信号A默认处理动作term 中断原创 2014-09-21 01:18:58 · 2106 阅读 · 0 评论 -
3Linux内存映射,mmap()函数
1mmap()依赖的头文件#include 2函数声明:void *mmap(void *addr, size_t length, intprot, int flags, intfd, off_t offset);int munmap(void *addr, size_t length);函数说明:mmap可以把磁盘文件原创 2014-09-20 23:48:33 · 1216 阅读 · 0 评论 -
2fifo有名管道
1fifo有名管道创建一个有名管道,fifo2.fifo依赖的头文件#include #include 函数声明int mkfifo(const char *pathname, mode_tmode);3.fifo的写端应用#include #include #include原创 2014-09-20 23:46:34 · 1165 阅读 · 0 评论 -
UDP(socket)接和数据案例封装成C++代码
配置QT下的pro文件TEMPLATE = appCONFIG += consoleCONFIG -= app_bundleCONFIG -= qt LIBS += -lWs2_32 ##标示使用window下的Ws2_32.lib,-l表示要链接后面的库#-lWs2_32,link Ws2_32.lib SOURCES +=原创 2014-08-09 22:09:54 · 3450 阅读 · 1 评论 -
Linux服务器开发之:chmod()函数,chmod命令,以及文件屏蔽umask命令,程序修改umask,详细介绍+案例演示
1.依赖的头文件#include2.函数定义://通过传入path中给定的文件名的方式来改变文件制定的权限int chmod(const char *path,mode_t mode);//通过传入文件描述符的方式为一个文件重设权限int fchmod(int fd,mode_t mode);注意:如果使用Linux的chmod命令时,得有root权原创 2014-09-14 14:14:17 · 2304 阅读 · 0 评论 -
Linux服务器编程之:chown()函数,chown命令
1.依赖的头文件#include2.函数定义://通过传入path的方式,改变和文件的拥有关系,如果他是一个符号链接,则跟踪它int chown(const char *path, uid_t owner, gid_t group);//通过文件描述的方式进行修改用户所有组等的情况int fchown(int fd, uid_t owner, gid_t group);原创 2014-09-14 17:43:47 · 8187 阅读 · 0 评论 -
2进程之间的关系:进程组,会话,守护进程
1进程组一个或过个进程的集合,进程组ID是一个正整数。用来获得当前进程组ID的函数。pid_t getpgid(pid_t pid)pid_t getpgrp(void)获得父子进程进程组运行结果:组长进程标识:其进程组ID=其进程ID组长进程可以创建一个进程组,创建该进程组中的进程,然后终止,只要进程组中有一个进程存原创 2014-09-21 01:33:18 · 2243 阅读 · 0 评论 -
1线程同步:互斥量,死锁
1线程为什么要同步A:共享资源,多个线程都可对共享资源操作。B:线程操作共享资源的先后顺序不确定。C:处理器对存储器的操作一般不是原子操作。2互斥量mutex操作原语pthread_mutex_tpthread_mutex_initpthread_mutex_destroypthread_mutex_lock原创 2014-09-25 16:44:58 · 2628 阅读 · 0 评论 -
5进程原语:execl(),execlp(),execle(),execv(),execvp(),execvp(),execve()
1.exec族依赖的头文件#includeextern char**environ;2函数声明//第一个参数:可执行程序所在的绝对位置//第二个参数:可执行程序运行时所需的参数,这里是一个可变参数,每个参数之间用逗号分割//参数结束时,最后一个参数是:NULLint execl(constchar *path, const cha原创 2014-09-17 06:56:31 · 7846 阅读 · 0 评论 -
3进程状态getrlimit()函数和setrlimit()函数
1修改进程资源限制,软限制可改,最大值不能超过硬限制,硬限制只有root用户可以修改查看进程资源限制cat /proc/self/limitsulimit -a 2getrlimit()函数和setrlimit()函数A依赖的头文件#include#in原创 2014-09-17 07:00:10 · 2023 阅读 · 0 评论 -
4线程同步:信号量
1信号量信号量可以有n把锁。依赖的头文件#include 函数声明sem_t表示信号量 int sem_init(sem_t *sem, int pshared,unsigned int value);名称:sem_init功能:原创 2014-09-25 16:57:47 · 1382 阅读 · 0 评论 -
4进程原语:fork()函数,getpid()函数和getppid()函数,getuid()函数,getgid()函数,vfork()
1fork()函数子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。fork调用一次返回两次,有以下特点:A:父进程中返回子进程IDB:子进程中返回0C:读时共享,写时复制2fork()依赖的头文件#include 3fork()函数说明:pid_tfork(void);原创 2014-09-16 23:38:26 · 4171 阅读 · 0 评论 -
2通过程序获得环境变量,getenv(),setenv()函数和unsetenv()函数,env查看环境变量,echo输出指定的环境变量
1进程环境libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时要用extern声明。例如:运行结果:2.env命令可以查看进程信息3.echo $环境变量名 得出环境变量的值4getenv()A依赖头文件#includeB函数声原创 2014-09-16 00:33:42 · 4419 阅读 · 0 评论 -
1虚拟地址,虚拟内存映射,系统调用本质,进程运行状态
1操作系统会为每个进程分配0到4G的虚拟地址2.关于虚拟内存和物理内存之间的关系总结:A程序管理内存的最小单位是page(4096Byte),如果需要的内存不够4096字节,实际上开辟的也是4096字节。B每个程序对应独立的虚拟内存,调用的时候先找自己的虚拟内存,然后实质上是通过虚拟内存找物理内存。C每个进程共享操作系统的kern原创 2014-09-15 23:31:57 · 1384 阅读 · 0 评论 -
10Linux服务器编程之:opendir()函数,readdir()函数,rewinddir()函数,telldir()函数和seekdir()函数,closedir()函数
1 opendir所需的头文件#include#include2函数声明DIR *opendir(const char *name);DIR *fdopendir(int fd);通过opendir来打开一个文件夹3readdir依赖的头文件#include4函数声明struct dirent *readd原创 2014-09-15 23:24:12 · 2663 阅读 · 0 评论 -
9Linux服务器编程之:mkdir()函数和rmdir()函数
1 mkdir依赖的头文件#include#include 2.函数声明:int mkdir(const char *pathname, mode_tmode);3.案例说明:运行结果:注意:函数声明中的mode表示的是权限是多少4rmdir:删除一个目录所依原创 2014-09-15 23:25:34 · 1725 阅读 · 0 评论 -
8Linux服务器编程之:chdir()函数和cd命令,getcwd()函数和pwd
1chdir依赖的头文件#include2函数定义int chdir(const char *path);int fchdir(int fd);函数说明:chdir的作用是改变工作目录4getcwd依赖的头文件#include5函数定义:char *getcwd(char *buf, size_t size原创 2014-09-15 23:23:03 · 4909 阅读 · 0 评论 -
11Linux服务器编程之:VFS虚拟文件系统,dup()函数和dup2()函数
1dup函数和dup2函数#includeint dup(intoldfd);int dup2(intoldfd, int newfd); dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体原创 2014-09-15 23:27:53 · 1437 阅读 · 0 评论 -
1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client
1 Socket编程socket这个词可以表示很多概念:在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”就称为socket。在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接。socket本身有“插座”的意思原创 2014-09-26 22:39:01 · 2368 阅读 · 0 评论 -
Linux服务器编程之:truncate()函数+案例说明
1.依赖头文件#include#include2.函数定义:int truncate(const char *path,off_t length);int ftruncate(int fd,off_t length);函数说明:The truncate() and ftruncate() functions cause the regular file named原创 2014-09-14 19:03:03 · 4731 阅读 · 0 评论 -
Linux服务器编程之:utime()函数
1.依赖的头文件原创 2014-09-14 18:19:46 · 4689 阅读 · 0 评论 -
从简入难makefile文件编写,Linux C++编程,简单vi命令
1.一个最基本的C++程序2.第二个c++程序3.第一个入门级别的简单的makefile4.在makefile中定义变量。5.编写makefile的依赖如果start:标识后面的某个.o没有,则重新编译没有编译的那个文件6.最终的makefile文件总结:makefile是通原创 2014-08-09 19:04:13 · 6833 阅读 · 5 评论