Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

文件锁和Python多进程的使用

文件锁和Python多进程的使用

1.文件锁问题:进程P1中有一个线程T1,T1执行的函数为f1;进程P2中有一个线程T2,T2执行的函数为f2。当f1和f2都需要对同一个资源进行操作时,比如同时对文件file1进行操作。为了线程安全,则当f1在操作(读或写文件file1)时,不允许f2操作(读或写文件file1)。反之,当f2在操作file1时,不允许f1操作file1。即f1和f2不能同时操作file1。解决方法:可以采用文件锁(这里文件锁的意思为将对资源file1的访问状态保存在文件...
Python中线程的使用

Python中线程的使用

线程启动之后,会执行一个函数,当该函数执行完之后,线程也就结束了,该函数只被执行一次。下面我以问题的形式,给出一些我的理解。想让线程不停地运行,该怎么实现?一般有2种方法:(1)在该线程执行的函数中,设置一个死循环,即while true。当线程调用该函数时,则该函数就会陷入了死循环。当满足某种条件之后,可以通过break退出该循环。本blog中介绍的“双线程高效下载问题”和“多线程概述”中给出的代码,都是这种方法。(2)重写线程中的run方法中,设置一个...
嵌入式Linux内核介绍

嵌入式Linux内核介绍

Linux最早是由芬兰的Linus Torvalds为在英特尔x86架构上提供一个自由免费的类Unix操作系统而开发的。准确来说,Linus Torvalds仅仅是完成了Linux 的“内核”。也就是说 Linux 内核 =/= Linux操作系统。现在PC机上比较流行的RedHat 、Ubuntu等等都是基于Linus Torvalds开发的Linux内核扩展、开发而来的。关于Linux版本的问题:Linux 和 微软的Windows不同,Linux的版...
编写Linux定时处理程序

编写Linux定时处理程序

本文要写的Linux定时处理程序,想必这是很多Linux开发人员需要处理的问题。例如编写一个每天数据入库程序,编写一个定时邮件通知程序等等。对于定时处理程序,主要有两种方法可以实现。一种是使用crontab来做程序的定时启动,实现定时处理功能,一种是通过守护进程,间隔一段时间处理一次。下面对这两种实现做一些分析。crontab 是用来设置被周期性执行的指令。可以设置每隔一段时间执行一次程序,执行的方法是新建一个进程来进行处理。通过编写一个cronfile定...
C++循环变量定义生命周期

C++循环变量定义生命周期

C++与C的一个最大的不同的是C要求所有变量要在最开始的就声明,而C++的变量是信手拈来,想用才声明。这个简单的细节其实隐含了C与C++的设计逻辑有所区别。C设计的时候其实更多是为编译器考虑问题,当所有变量在使用之前就声明的话,编译器更容易处理这些变量。在开始的时候就把他们都写入符号表中,在程序执行的时候直接查看符号表即可。然而C++设计的时候对安全性特别关注,对于类,它是有构造与析构处理的。而构造函数有时是需要参数,我们在程序的最开始其实我们不一定很清楚...
关于C++友元的一些思考

关于C++友元的一些思考

友元在C++里面是一个比较重要的东西,对于类里面声明的私有数据与函数,如果在某些应用需求下需要被其他函数调用,这时候就需要使用友元函数。就好像给了一个声明,说某某函数是我这个类的一个好朋友,你们可以大胆地放他进入我的闺房,访问我的数据。在C++里面,我们定义友元是使用friend 这个关键字。声明友元函数可以有下面四种情况。classX{ private: inti; public: friendvoidh(); friendclassZ; frinedv...
Shell脚本中参数传递方法介绍

Shell脚本中参数传递方法介绍

1. $# 传递到脚本的参数个数2. $* 以一个单字符串显示所有向脚本传递的参数变量。与位置变量不同,此选项参数可超过9个3. $$ 脚本运行的当前进程ID号4. $! 后台运行的最后一个进程的进程ID号5. $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数6. $- 显示shell使用的当前选项,与set命令功能相同7. $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误8. $()里面放命令,可以在脚本中执行该命令,并返回命...
Linux下C++如何利用Boost库进行序列化

Linux下C++如何利用Boost库进行序列化

由于项目需求需要传输结构化的数据,但是我们进行socket通信时,利用recv和send函数处理的都是序列化的数据,如何利用socket进行结构化的数据传输呢?这里就用到了我们现在要总结一下的boost库,boost是一个开源的准标准的模板库,里面就提供了我们这里需要的序列化和反序列化的工具。话不多说,现在开始!要使用boost库,首先需要的就是安装:我们可以在终端中直接安装:sudo apt-get install libboost1.46当然我们也可以...
浅谈C++中stringstream对象

浅谈C++中stringstream对象

iostream标准库支持对于内存的输入输出,只要将流与存储在程序内存中的string对象捆绑在一起,就可以使用通用的输入输出操作符来读写string对象!标准库中定义了三种类型的字符串流:istringstream,由istream派生出来的,用于读一个string的对象;ostringstream,由ostream派生出来的,用于写一个string的对象;stringstream,由iostream派生出来,同时提供了对于stringstream对象的...
<< 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 >>