Linux系统编程
fly__chen
勿忘初心,别让写博客失去它该有的意义。
展开
-
(笔记)Linux下网络编程,采用TCP协议实现的C/S架构
TCP/UDP介绍TCP(Transfer Control Protocol)传输控制协议是一种面向连接的协议, 当我们的网络程序使用这个协议的时候,可以保证我们的客户端和服务端的通信是可靠的,安全的,适合于传输大批量数据的情况. UDP(User Datagram Protocol)用户数据报协议是一种非面向连接的协议, 这种协议并不能保证我们的网络程序的通信是可靠的,适合一次传输少量的数据.原创 2016-10-04 20:03:14 · 5681 阅读 · 0 评论 -
进程间通信编程(5) - 信号量
信号量:(Semaphore)进程间通信处理同步互斥的机制。是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。 竞态条件(race condition)是一个在设备或者系统试图同时执行两个操作的时候出现的不希望的状况,但是由于设备和系统的自然特性,为了正确地执行,操作必须按照合适顺序进行。 在计算机内存或者存储里,如果同时发出读写大量数据的指令的时候竞原创 2016-10-25 20:42:31 · 335 阅读 · 0 评论 -
进程间通信编程(3) - 有名管道
使用管道只能在相关的程序之间传递数据,即这些程序是由一个共同的祖先进程启动的。如何在不相关的进程之间交换数据呢? 可以用FIFO文件完成这项工作,它通常被称为命名管道(named pipe)。命名管道是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但它的行为却和没有名字的管道类似。 可以在命名行上创建命名管道,也可以在程序中创建。命令行的命令是: mkfifo file原创 2016-10-25 19:55:54 · 316 阅读 · 0 评论 -
进程间通信编程(4) - 信号
假设要访问一个文件,如果多个进程试图在同一时间更新这个文件,文件中的数据就可能会遭到破坏。不同的进程要求向文件中写入数据(例如,更新日志),这本身并没有错,问题只可能出现在对文件进行更新的那部分代码上。 这部分真正执行文件更新的代码需要独占式地执行,它们被称为临界区域。1.信号的本质 信号是在软件层次对中断机制的一种模拟,在原理上,一个进程收到一个信号和CPU接收到一个中断请求可以说是一样的。原创 2016-10-25 20:41:46 · 318 阅读 · 0 评论 -
进程间通信编程(2) - 无名管道
管道包括无名管道和有名管道两种,前者用于父进程和子进程间的通信,后者可用于运行于同一系统中的任意两个进程间的通信。原创 2016-10-25 19:35:02 · 417 阅读 · 0 评论 -
Linux进程间通信方式
一些复杂的应用程序可能会需要多个进程分工协作来满足所需的功能需求,这就必然涉及到数据在进程之间的共享或交换,称为IPC(Inter-process communication,进程间通信)。原创 2016-10-25 19:00:22 · 288 阅读 · 0 评论 -
进程间通信(6) - 内存共享
共享内存的概念一个进程不能简单地将自己的内存空间地址传递给其他进程使用,这是因为Linux操作系统的内存保护机制或者说内存映射机制的限制。 在一个进程内,指向一块内存的指针实际上是虚拟地址,而不是真正的物理内存地址,这个地址仅在当前进程内使用才是有效的。 但是,如果通过某种方式能够实现多个进程访问一块物理内存,那么进程之间的数据交换就可以通过读写内存来进行,这将是一种效率很高的通原创 2016-10-25 21:36:50 · 315 阅读 · 0 评论 -
Linux常用命令实例详解(N - Z)
Nnetstat显示网络有关的信息,比如套接口使用情况、路由、接口、协议(TCP等)等查看TCP连接的命令是什么?正确答案: C 你的答案: A (错误)tcpdumptopnetstatifconfigOPQRSTtar解压缩命令语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。主选项: -c原创 2016-11-23 11:38:40 · 885 阅读 · 0 评论 -
Linux常用命令实例详解(A - M)
Linux常用命令实例详解原创 2016-11-23 11:24:34 · 2721 阅读 · 0 评论 -
进程间通信(8) - 消息队列
消息队列就是一个消息的链表,可以把一条消息看做一个记录,具有特定的格式以及特定的优先级,消息的发送和接收都以条为单位。消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。接收进程可以独立地接收含有不同类型值的数据块。原创 2016-10-25 21:39:45 · 205 阅读 · 0 评论 -
僵尸进程以及wait和waitpid函数
基本概念: 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程再创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进原创 2016-11-21 14:18:32 · 3046 阅读 · 0 评论 -
select函数详细解释(Linux下网络编程)
Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方转载 2016-11-04 15:10:55 · 532 阅读 · 0 评论 -
IP地址转换函数——inet_ntop(),inet_pton(),inet_addr(),inet_aton(),inet_ntoa()
点分十进制字符串(dotted-decimal notation)与二进制数值互转const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); //二 转 十int inet_pton(int af, const char *src, void *dst); //十 转 二注意: (1) 二进制数值形式是网原创 2016-11-04 20:40:59 · 2320 阅读 · 0 评论 -
Shell (1)
shell 基础原创 2016-10-11 17:22:10 · 330 阅读 · 0 评论 -
如何成为合格的嵌入式Linux开发工程师
成为一名合格的嵌入式Linux开发工程师需要学习哪些知识?原创 2016-10-19 10:42:35 · 1223 阅读 · 0 评论 -
Linux下进程内存空间组成/进程的内存映像
Linux下进程内存空间组成原创 2016-11-08 21:01:32 · 2508 阅读 · 0 评论 -
Linux系统编程之错误处理:errno和perror,strerror
Linux系统下错误处理方法:使用errno变量。头文件: errno.h在系统出现错误时内核把错误写入到变量errno中。用户的应用程序可以从这个变量中获取错误的原因。注意在系统调用返回失败时,必须紧接着引用errno变量,以避免程序中的下一条系统调用时覆盖errno的值。errno的值可以格式化使出,使用错误处理函数 : perror strerror。perror和strerror函数原创 2016-11-09 16:44:29 · 6777 阅读 · 1 评论 -
关于Linux 中sleep()函数说明
相关函数:signal, alarm头文件:#include <unistd.h>定义函数:unsigned int sleep(unsigned int seconds);函数说明:sleep()会令目前的进程暂停, 直到达到参数seconds 所指定的时间, 或是被信号所中断.返回值:若进程/线程挂起到参数所指定的时间则返回0,若有信号中断则返回剩余秒数。linux下Sleep()函数:单位为原创 2016-11-15 19:15:41 · 24699 阅读 · 0 评论 -
Linux ps命令详解与示例说明
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多 的资源等等。总之大部分信息都是可以通过执行该命令得到的。名称:ps 使用权限:所有使用者 使用方式:ps [options] [–help] 说明:显示瞬间进程转载 2016-11-21 12:48:03 · 2195 阅读 · 0 评论 -
笔记 vfork,进程树,exec函数族,system函数
一. vfork区别:1. fork:子进程拷贝父进程的数据段 vfork:子进程与父进程共享数据段2. fork:父、子进程的执行次序不确定 vfork:子进程先运行,父进程后运行//分析下程序错误:#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ pid_t pi原创 2016-11-21 13:09:34 · 572 阅读 · 0 评论 -
Linux 链接?软链接和硬链接区别?
http://www.cnblogs.com/itech/archive/2009/04/10/1433052.html转载 2016-11-25 15:18:50 · 1187 阅读 · 0 评论