linux

来源:互联网 发布:qq免费刷赞软件下载 编辑:程序博客网 时间:2024/06/04 07:34
fork:复制进程映像的系统调用,子进程的代码与原进程完全相同,数据采用写时复制  exec:替换进程映像的系统调用,
在子进程中执行其他程序,一般不返回,除非出现错误返回-1,exec执行成功后原进程在exec后的代码都不会执行,因为
此时原进程已经exec参数指定的程序完全替换(包括代码和数据);


僵尸进程:子进程结束运行到父进程读取其退出状态之前,或者父进程结束运行到子进程退出之前;解决方法:wait waitpid这两函数
进程通信:1管道:创建方式pipe系统调用,通信原理:利用的是fork系统调用后的两个管道文件描述符(fd[0]和fd[1])都保持打开,
只能保证父子进程间一个方向的数据传输,必须有一个关闭fd[0],一个关闭fd[1];要实现双向,必须使用两个管道;管道只能
用于有关联的两个进程通信,比如父子进程;下面接受的三个System V IPC能用于无关联进程之间的通信;
2信号量:p v操作 p:关键代码可用时,二进制信号量sv的值为1,如果sv的值大于零,就将它减去1,如果sv的值为0,则挂起进程
v操作:如果进程处于挂起状态,则将它唤醒,否则sv的值加1
semget系统调用:创建或者获得信号量集,semop系统调用:改变信号量的值:即执行p,v操作
semctl:允许调用者对信号量进行直接控制  semget给其参数key传递ipc_private时,这时无论信号量是否存在,都会创建一个新的
信号量;
3共享内存:最高效的,四个系统调用:shmget,shmat,shmdt,shmctl
shmget:创建新的共享内存,或者获取已经存在的共享内存; 共享内存创建后,不能立即访问它,需要先将它关联到进程的地址空
间中,使用完共享内存后,需要将它从进程的地址空间中分离;分别由shmat和shmdt两个系统调用实现;shmctl:控制共享内存
的某些属性;
4消息队列:两个进程之间传递二进制数据块的简单有效的方式,每个数据块都有一个特定的类型,接收方可以根据类型来有选择
的接收数据;
四个系统调用:msgget:创建新的消息队列或者获取已有的消息队列;msgsnd:吧一条消息添加到消息队列中;msgrcv:从消息队列中
获取消息;msgctl:控制消息队列的某些属性;
ipcs命令:查看当前系统上有哪些共享资源实例;ipcrm:删除遗留在系统中的共享资源示例;
线程:是进程中完成一个独立任务的完整执行序列,分为内核线程和用户线程;线程的实现:完全在用户空间,完全在内核,双层调度;
俩个有名的线程库:linuxThreads和nptl;现代linux上默认使用NPTL;
创建线程:pthread_create() 结束线程:pthread_exit() 回收其它线程:pthread_join();异常终止一个线程,即取消一个线程:
pthread_cancle();
2 线程同步:posix信号量,互斥量,条件变量; posix信号量函数:sem_init():初始化一个未命名的信号量 ;sem_destory:
销毁信号量,释放其占用的内核资源;sem_wait:以原子操作的方式将信号量的值减去1;sem_trywait():操作的信号量无论是否为0
都减去1;sem_post:以原子操作的方式将信号量的值加1;
3 条件变量:用于线程之间同步共享数据的值;当共享数据达到某个值时,唤醒等待这个共享数据的线程;
4 可重用函数:一个函数能被多个线程调用而不发生竞态条件,则称他是线程安全的,或者说是可重用函数;
基本命令:磁盘:du:显示目录或者文件所占用的磁盘空间
文件:grep:查找文件中符合条件的字符串  //grep 选项 文件名 
find:查找目录或者文件,//find -name 文件名
awk:模式匹配语言:将文件和正则表达式进行比较,在与正则表达式匹配的行上进行操作 //awk 正则表达式 文件名
wc:输出文件中的行数,单词数,字节数
chmod:设置文件或目录的访问权限 // chmod 444 文件名   444标识可读,可写,可执行(u,g,o)
进程管理:crontab:设置计时器  ps:查看进程状态 ps aux查看所有用户进程状态  
top //动态显示过程

  
原创粉丝点击