月度归档: 2015年11月

Linux系统函数_read和write实现文件拷贝功能 代码

Linux系统函数_read和write实现文件拷贝功能 代码,练习所写不足之处请在下方评论指出

 

Linux系统编程_ errno错误返回EAGAIN的含义

在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。 从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以 O_NONBLOCK的标志打开文件/socket/FIFO,如果你连续做read操作而没有数据可读。此时程序不会阻塞起来等待数据准备就绪返回,read函数会返回一个错误EAGAIN,提示你的应用程序现在没有数据可读请稍后再试。 又例如,当一个系统调用(比如fork)因为没有足够的资源(比如虚拟内存)而执行失败,返回EAGAI…

Linux系统调用_access函数的功能和使用

access():判断是否具有存取文件的权限 相关函数 stat,open,chmod,chown,setuid,setgid 头文件 #include<unistd.h> 定义函数

函数说明 access()会检查是否可以读/写某一已存在的文件。参数mode有几种情况组合, R_OK,W_OK,X_OK 和F_OK。R_OK,W_OK与X_OK用来检查文件是否具有读取、写入和执行的权限。F_OK则是用来判断该文件是否存在。由于access()只作权限的核查,并不理会文件形态或文件内容,因此,如果一目录表示为“可写入…

Linux下C/C++开发必备技能_Makefile项目管理

Linux环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix 程序员。 在 Linux(unix)环 境下使用 GNU 的 make 工具能够比较容易的构建一个属于你自己的工程,整个工程的 编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一 些时间去完成一个或者多个称之为 Makefile 文件的编写。 在执行 make 之前,需要一个命名为 Makefile 文件来告诉 make 需要做什么(完成什么任务),该 怎么做。通常,make 工具主要被用来进行工程编译和程序链接。 当使用 make…

linux下C/C++调试工具 gdb的使用详解

程序中除了一些一目了然的BUG之外,都需要要一定的调试手段来分析程序到底错在哪了。到目前为止我们的调试手段只有一种:根据程序执行是的出错现象假设错误原因,然后在代码中适当的为止使用printf打印出结果,如果结果和预期一样,那么就基本证明了自己已经找到了错误原因了。 今天我们就来用一种非常强大的调试工具gdb,可以完全操控程序的运行,可以随心所欲的让程序走就走,让它停就停,并且可以随时查看程序中所有的内部状态,比如各个变量的值,传给函数的参数,当前执行语句的位置等等 Linux系统下安装gdb调试工具 要想使用gdb,必须要先安装,一般的linux发行版本都是自带gdb调试工具的,验证是否安装…

C语言_共享库(动态库) 的制作和使用

什么是共享库 共享库的名字一般是 libxxx.so,共享库又称动态库; 机制:多个程序共享一份库文件,当程序实际调用到库函数时加载库函数。 优点:节省系统资源 缺点:相较于静态库调用库函数效率低。 场景: 存储资源要求较高   或者更新频繁的程序 相对于静态函数库,动态函数库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。 动态库就是在程序载入内存的时候才真正把函数代码链接进来确定他们的地址,并且就算多个程序运行,内存也只存在一份代码。由于动态库的代码必须满足这样一个条件:能被加载到不同进程的不同地址,所以代码必…

C语言_静态库的制作和使用

一、什么是库 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。 Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库。Linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib。 静态库和共享库的概念 在链接共享库时只是指定了动态链接器和该程序所需要的库文件,并没有真正的做链接,可执行文件中仍然是未定义的符号,需要在运行时做动态链接。 而在链接静态库时,链接器会把静态库中的目标文件取出来和可执行文件真正的链接在一起,所以采用静态库的可执行文件一般很大,不需要库文件也能运…

Linux基础_什么是shell和常用的文件操作命令

shell:命令解释器,根据输入的命令执行相应命令。 察看当前系统下有哪些shell可以使用

下面给大家列出一些常见的shell: /bin/sh (已经被 /bin/bash 所取代) /bin/bash (就是 Linux 默认的 shell) /bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash) /bin/tcsh (整合 C Shell ,提供更多的功能) /bin/csh (已经被 /bin/tcsh 所取代) /bin/zsh (基于 ksh 发展出来的,功…

VirtualBox虚拟机移动虚拟硬盘 UUID have already exists

我的macbook的ssd只有128G,之前使用虚拟机安装linux系统,给存在了我的 固态盘里了,后来虚拟机占的硬盘越来越打,SSD空间又那么宝贵,只能把VirtualBox虚拟机 的 虚拟硬盘移动到移动硬盘里,然后在虚拟机里删除之前的虚拟硬盘,然后重新添加一下, 然后就报错了: with UUID {b0a71841-2639-4409-843c-b01cfecfe2fe} already exists. 上面报错提示的意思就是,你要添加的虚拟硬盘的 UUID 已经存在了。我们需要修改一下移动后的 虚拟机的虚拟硬盘的 UUID  才能正常使用 在终端里执行下面这一行命令(Mac ,Linu…

CentOS搭建Django开发环境[图文教程]

昨天发的教程并不完美,今天重新发一篇保证好用,药到病除! 我使用的是CentOS 6.4的系统,自带的python版本是 2.6.6的,现在Django支持2.7 -3.3版本的python,需要先升级一下才可以(不要删除系统自带的2.6的版本,因为因为linux系统有很多都依赖它) 首先把需要的系统环境软件安装一下(如果你的linux系统里没有安装这些软件,是无法编译下面的文件的)

开始安装python 2.7.10

然后修改 ./Modules/Setup […