linux编程
书晴
bXpvbmVzZXZlbkAxNjMuY29t
展开
-
线程同步-互斥锁
在linux下,当我们需要控制对共享资源的存取的时候,可以用一种简单的加锁的方法来控制。所谓的共享资源分为三点:1、全局变量2、文件操作3、某些硬件端口下面这个例子是对文件的操作进行加锁,每两秒写入字符1到文件,然后读出文件中字符的长度,每次的读文件必须在写文件之后进行:#include #include #include #include原创 2013-08-20 22:52:01 · 473 阅读 · 0 评论 -
Socket编程之I/O复用
I/O复用在上一章中看到TCP客户端同时处理两个输入:标准输入和TCP套字节。我们遇到的问题是客户阻塞于(标准输入上的)fgets()调用,而服务器进程退出。服务器TCP虽能正确地客户TCP发了一个FIN,但客户进程正阻塞于从标准输入读操作,它直到对套字节调用read()时才能觉察到连接关闭,这可能已经过了很长时间。我们需要这样的能力:如果一个或多个I/O条件满足(例如,输入已准备好,或者文件原创 2013-08-28 21:19:26 · 751 阅读 · 0 评论 -
进程间通信—Socket编程
linux下Socket编程的原理大家参考下面这篇博客:http://blog.csdn.net/xiaoweige207/article/details/6211577我就不多介绍了,下面这是一个小例子。客户端代码:#include #include #include #include #include #include #include #includ原创 2013-08-27 22:06:54 · 700 阅读 · 0 评论 -
进程间通信—管道
进程间通信的方式:(1)管道:一种两个进程间进行单向通信的机制,半双工的通信方式。数据只能单方向流动,而且只能在具有亲缘关系(父子进程、兄弟进程)的进程间使用。从通信的双方信息交互的方式分三种基本模式:单工通信(单向通信) 只有一个方向的通信而没有反方向的交互(信息流是单方向的),发送端和接收端的身份是固定的;半双工通信(双向交替通信)双方均可以发送、接收信息,但是同一时刻里原创 2013-08-27 21:49:51 · 686 阅读 · 0 评论 -
进程间通信—消息队列(二)
实例:模拟经纬度的收发工作。(采用消息队列的方式处理)项目中涉及2个不相关进程A和进程B假设你是项目的进程A编写者,你负责把进程A的经纬度发送到第三方导航软件中导航定位(进程B)进程A每2秒发送一次经纬度,进程B每3秒接受一次经纬度并打印显示。上海默认是北纬东经数据体(body)协议: int header;//1000 //12原创 2013-08-24 21:26:15 · 524 阅读 · 0 评论 -
进程间通信—消息队列(一)
消息队列基本概念:消息队列是系统内核地址空间中的一个内部的链表。消息可以按照顺序发送到队列中,也可以以几种不同的方式从队列中读取。每一个消息队列用一个唯一的IPC标识符表示。我们来实现一个简单的消息队列的工具,用于创建消息队列、发送、读取消息、改变权限以及删除消息队列。综合实例:msgtool#include #include #include #include #原创 2013-08-24 21:07:12 · 575 阅读 · 0 评论 -
进程间通信—信号(二)
一、模拟获取GPS数据,然后1s更新到显示屏。进程A:每秒打开文件gps.dat写date时间到文件,打开写前清空下数据,写完即发送信号SIGUSR1到进程B。进程B:收到信号SIGUSR1,只读方式打开文件gps.dat,把读到的数据打印到显示屏。提示:用system(“date > gps.dat”)写数据重定向到文件。#include #include #原创 2013-08-22 21:15:23 · 554 阅读 · 0 评论 -
基本文件I/O
linux编程的一个小练习,j基本文件I/O的操作;问题:从src.txt中读出数据 ,清除每末尾的*,整理后写入到dst.txt中必须用read,write去实现,写成小函数,可以读取一行以\n为标识符原数据:123**45*****78****整理后的数据:123**4578#include #include #include原创 2013-08-22 20:32:42 · 513 阅读 · 0 评论 -
进程间通信—信号(一)
信号机制是linux系统中最为古老的进程之间的通信机制。What:信号是一种Event时间,原理都是中断机制,是一种异步处理,是一种通知。How to do:1、分析信号的发送方和接收方是谁2、在接受方做好信号的安装注册。(主要是回调函数)3、发送方触发信号的event事件发生了,驱动了在接收方应急准备好的回调函数。最常用的发送信号的系统函数是kill(),rise(),a原创 2013-08-22 21:04:28 · 530 阅读 · 0 评论 -
进程间通信—信号量
IPC标识符和关键字:在终端输入ipcs,可以看到目前系统中所有的IPC信息:第一列的key就是IPC的关键字,第二列是IPC的标识符。ftok()函数用于获得一个IPC的关键字,其函数原型是:key_t ftok(const char *pathname,int proj_id);下面是一个信号量的综合实例:#include #include #in原创 2013-08-22 22:17:19 · 568 阅读 · 0 评论 -
进程间通信—信号(三)
下面是安装两个信号的例子:信号例子:进程A:安装信号SIGUSR1,SIGUSR2收到SIGUSR1:启动火车票系统(这里可以是任一一个程序);收到SIGUSR2:重启系统(打印自己的PID);进程B:接收用户键盘输入输入: start: 发送SIGUSR1给进程Arestart:发送SIGUSR2给进程Abye:退出进程提示:1、用2个不相关的原创 2013-08-22 21:43:01 · 681 阅读 · 0 评论 -
CP的实现
linux下一个简单的文件复制程序,cp命令的实现,#include #include #include #include #include #include int main(int argc, char **argv){ int fd_read; int fd_write; char buf[128]={0}; int bytes_read,bytes_write;原创 2013-08-20 23:59:07 · 560 阅读 · 0 评论 -
Google Nexus5关于Android 6.0源码的同步,编译和烧写
关于Ubuntu下Android开发的环境搭建这里就不在详述啦,下面所提到的主要是一些关键点,repo工具的下载和使用mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo如果你原创 2015-11-19 17:15:56 · 2327 阅读 · 0 评论