linux
文章平均质量分 84
mathZHA
这个作者很懒,什么都没留下…
展开
-
linux入门基础——linux软件管理RPM
因为linux入门基础是基于CentOS讲解的,讲的是CentOS上的软件包管理。ubuntu的软件包管理有这些:ubuntu软件包管理,包管理指南,ubuntu软件包管理。linux软件管理:RPM软件包管理源代码形式绝大多数开源软件都是直接以源代码形式发布源代码一般会被打包成tar.gz的归档压缩文件程序源代码需要手动编译成二进制形式之后才能够运行使用源代码基本编译原创 2015-06-12 20:49:54 · 919 阅读 · 0 评论 -
linux程序设计——linux环境(第四章)
4.5 用户信息这篇为linux环境,代码在linux环境代码下载。除了著名的init程序以外,所有的linux程序都是由其他程序或用户启动的。(内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以init始终是第一个进程(其进程编号始终为1)。当一个用户登录进linux系统时,用户有一个用原创 2015-06-09 10:08:30 · 660 阅读 · 0 评论 -
linux程序设计——shell程序设计(第二章)
这篇介绍shell的语法,包括shell中的变量,条件判断,控制结构和函数。此外,这篇的所有命令都在变量条件控制结构函数。下一篇是命令和命令的执行。Shell的语法条件所有程序设计语言的基础都是对条件的进行测试判断,并根据不同测试结果采取不同行动。一个shell脚本能够对任何可以从命令行上调用的命令的退出码进行测试,其中也包括自己编写的脚本程序。这也就是要在所有自己编写的脚本程序的原创 2015-06-02 16:49:20 · 995 阅读 · 0 评论 -
linux入门基础——网络基础
linux网络基础网络原理网络编址IP编址IP编址是一个双层编址方案,一个IP地址标识一个主机(或者一个网卡接口)现在应用最为广泛的Ipv4编址,已经开始逐渐向Ipv6编址切换Ipv4地址为32位长,Ipv6地址为128位长一个Ipv4地址分为两个部分:网络部分和主机部分网络部分用来标识所属区域、主机部分用来标识该区域中的哪个主机IP地址Ipv4地址分为32原创 2015-06-07 13:37:17 · 710 阅读 · 0 评论 -
linux入门基础——命令行bash的基本操作
最近开始学习linux,使用u盘安装了Ubuntu12.04,装好之后又升级了14.04。正确安装的话应该很快,但我安装了好几次......第一次使用图书馆的wifi安装,没有安装好,结果不能连接wifi,卸载装了好几次,最后还是在宿舍连接网线才重装成功。 在网易云课堂边看视频边记笔记进行学习,网址是http://study.163.com/course/courseMain.htm原创 2015-05-18 13:34:51 · 587 阅读 · 0 评论 -
linux程序设计——执行SQL语句(第八章)
8.3 使用C语言访问MySQL数据4.处理返回的数据MySQL返回两种类型的数据1.从表中提取的信息,也就是列数据2.关于数据的数据,即所谓的元数据(metadata),例如列名和类型.mysql_field_count函数提供了一些关于查询结果的基本信息,它接受连接对象,并返回结果集中的字段(列)数目:unsigned int mysql_field_count(原创 2015-06-25 21:38:29 · 767 阅读 · 0 评论 -
linux程序设计——CD唱片应用程序(第七章)
7.4 CD唱片应用程序这篇为第七章的CD唱片应用程序,代码在CD唱片应用程序代码下载。我们使用dbm数据库对数据存储,改进之前的CD唱片应用程序。7.4.1 更新设计虽然在文件中以逗号分隔变量来存储信息是一种在shell中很容易实现的方式,但是这样局限性很大,因为许多CD标题和曲目都包含逗号。可以通过使用dbm数据库来改进这种方法。将CD资料分为标题和曲目两个部分,并用不同的文件原创 2015-06-17 21:38:51 · 1597 阅读 · 0 评论 -
linux入门基础——linux网络配置
linux网络配置以太网连接在linux中,以太网接口被命名为:eth0、eth1等,0、1代表网卡编号通过lspci命令可以查看网卡硬件信息(如果是usb网卡,则需要使用lsusb命令)命令ifconfig用来查看接口信息ifconfig -a 查看所有接口ifconfig 接口名字eth0 查看特定接口的信息命令ifup、ifdown用来启用、禁用一个接原创 2015-06-07 15:39:32 · 644 阅读 · 0 评论 -
linux程序设计——线程的属性(第十二章)
12.6 线程的属性在前面的所有程序示例中,都在程序退出之前用pthread_join对线程再次进行同步,如果想让线程向创建它的线程返回数据就需要这样做.但有时,也有这种情况,既不需要第二个线程向主线程返回信息,也不想让主线程等待它的结束.假设在主线程继续为用户提供服务的同时创建了第二个线程,新线程的作用是将用户正在编辑的数据文件进行备份存储.备份工作结束后,第二个线程就可以直接终止原创 2015-07-06 21:32:27 · 613 阅读 · 0 评论 -
linux入门基础——linux系统启动详解
linux系统启动详解系统启动流程1.BIOS(进行自检)2.MBR:Boot Code(磁盘分区机制,引导代码,此时已经到硬盘或者设备)3.执行引导程序-GRUB4.加载内核(kernel,此时操作系统的底层已经启动)5.执行Init(第一个进程,pid=1)6.runlevel1 BIOSBIOS(basic input output system)我们称之原创 2015-06-11 21:00:25 · 709 阅读 · 2 评论 -
linux程序设计——用互斥量进行同步(第十二章)
12.5.2 用互斥量进行同步另一种在多线程程序中的同步访问方法是使用互斥量.它允许程序员锁住某个对象,使得每次只能有一个线程访问它.为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后解锁它.用于互斥量的基本函数和用于信号量的函数非常相似,它们的定义如下所示:#include int pthread_mutex_init(pthread_mute原创 2015-07-06 11:27:38 · 750 阅读 · 0 评论 -
linux程序设计——make命令和makefile文件(第九章)
9.2 make命令和makefile文件9.2.3 makefile文件中的注释makefile文件中的注释以#号开头,一直延续到这一行的结束.和C语言的源文件注释一样,makefile文件中的注释可以帮助程序的编写者以及其他人理解最初编写这个文件的目的.9.2.4 makefile文件中的宏mkaefile文件允许使用宏以一种更通用的格式来书写它们.通过语句MACRONAM原创 2015-06-27 18:57:10 · 610 阅读 · 0 评论 -
linux入门基础——linux多命令协作:管道及重定向
linux多命令协作:管道及重定向不要重复发明轮子开源文化的核心理念之一就是不要重复发明轮子,很多的开源软件都是现有软件、代码、功能的重新组合,就好像通过零件装配机器一样,源代码的开发和共享让这成为了可能,同时也大大的提供了效率和生产力。管道和重定向在linux系统中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现一个或者多个很简单的功能,可以通过将不同功能的命令组原创 2015-06-07 18:40:30 · 647 阅读 · 0 评论 -
linux程序设计——shell程序设计(第二章)
第二章 shell程序设计本章介绍以下内容:什么是shell基本思路微妙的语法:变量,条件判断和程序控制命令列表函数命令和命令的执行here文档调试grep命令和正则表达式find命令shell执行shell程序,这些程序通常称为脚本,它们是在运行时解释执行的。这使得调试工作比较容易进行,因为可以逐行地执行指令,而且节省了重新编译的时间原创 2015-06-01 20:22:36 · 1123 阅读 · 0 评论 -
linux程序设计——多个源文件的问题,makefile的语法(第九章)
第九章 开发工具本章介绍一些linux系统中的程序开发工具,其中一些工具也可以在UNIX系统中使用.linux系统除提供开发人员必须的编译器和调试器外,还提供一组工具,其中每个都可以完成一件独立的任务,并且允许开发人员将它们创造性地组合在一起,而这种组合能力也是linux从UNIX的哲学体系中继承而来的.9.1 多个源文件带来的问题在编写小程序时,许多人都会在编辑完源文件后重新编译所有原创 2015-06-26 20:50:41 · 1625 阅读 · 0 评论 -
linux程序设计——使用C语言访问MySQL(第八章)
8.3 使用C语言访问MySQL数据Windows本地程序(如Access)可以通过ODBC驱动程序来访问MySQL,甚至有针对linuxODBC驱动程序。下面讨论使用C语言来访问MySQL.8.3.1 连接例程用C语言连接MySQL数据库包含两个步骤:1.初始化一个连接句柄结构2.实际进行连接首先,使用mysql_init来初始化连接句柄:#include原创 2015-06-22 20:52:28 · 678 阅读 · 0 评论 -
linux入门基础——linux命令行文本处理工具
linux命令行文本处理工具文件浏览cat 查看文件内容more 以翻页形式查看文件内容(只能向下翻页)less 以翻页形式查看文件内容(可上下翻页)head 查看文件的开始10行(或指定行数)tail 查看文件的结束10行(或指定行数)基于关键字搜索命令grep用以基于关键字搜索文本-i 在搜索的时忽略大小写原创 2015-06-07 21:10:17 · 547 阅读 · 0 评论 -
linux程序设计——文件操作(第三章)
第三章 文件操作3.1 linux文件结构与UNIX一样,linux环境中的文件具有特别重要的意义,因为它们为操作系统服务和设备提供了一个简单而一致的接口。在linux中,一切都是文件。这意味着,通常程序可以像使用文件那样使用磁盘文件、串行口、打印机等等。目录也是文件,但它是一种特殊类型的文件。在现代UNIX(包括linux)版本中,即使是超级用户可能也不再被允许直接对目录进原创 2015-06-04 18:08:15 · 1133 阅读 · 0 评论 -
linux程序设计——MySQL管理(第八章)
8.2.2 创建用户并赋予权限作为MySQL管理员,最常见的工作就是维护用户信息——在MySQL中添加和删除用户并管理它们的权限。通过在MySQL控制台中使用grant和revoke命令来管理用户权限。1.grant命令MySQL的grant命令几乎完全遵循SQL92的语法,它的常规格式是:grant on to [identified by user-password] [原创 2015-06-20 16:13:43 · 652 阅读 · 0 评论 -
linux入门基础——磁盘基本概念
磁盘基本概念计算机大多是使用机械硬盘(固态硬盘和USB盘一样是flash存储)cylinder柱面sector 扇区head 磁头磁盘在linux中的表示linux所有设备都被抽象为一个文件,保存在/dev目录下。设备名称一般为hd[a-z]或者sd[a-z]([a-z]为分区号),如:hda,hdb,sda,sdbIDE设备的名称为hd[a-z],SA原创 2015-05-26 11:19:43 · 541 阅读 · 0 评论 -
linux程序设计——文件操作(第三章)
上篇是文件操作(第三章上),文章中的代码在文件操作(代码下载)。3.6 格式化输出和输入3.6.1 printf、fprintf和sprintf函数printf函数能够对各种不同类型的参数进行格式化编排和输出。每个参数在输出流中的表示形式由格式化参数format控制,它是一个包含需要输出的普通字符和转换控制符代码的字符串。#include int printf(const原创 2015-06-05 16:03:32 · 741 阅读 · 0 评论 -
linux入门基础——linux系统常用命令
inux常用命令日期时间命令date查看,设置当前系统时间:格式化显示时间:+%Y--%m--%d命令hwclock用以显示硬件时钟时间命令cal用以查看日历命令uptime用以查看系统运行时间输出,查看命令命令echo用以显示输入的内容命令cat用以显示文件内容命令more用于翻页显示文件内容(只能使用空格键向下翻页)命令less用于翻页显示文件内容(带上原创 2015-05-26 10:52:55 · 1026 阅读 · 0 评论 -
linux程序设计——对FIFO进行读写操作(第十三章)
4.对FIFO进行读写操作使用O_NONBLOCK模式会影响的对FIFO的read和write调用.对一个空的,阻塞的FIFO(即没有用O_NONBLOCK标志打开)的read调用将等待,直到有数据可以读时才继续执行.与此相反,对一个空的,非阻塞的FIFO的read调用将立刻返回0字节.对一个完全阻塞的FIFO的write调用将等待,直到数据可以写入时才继续执行.如果非阻塞的FIFO不原创 2015-07-14 23:36:11 · 5688 阅读 · 0 评论 -
linux程序设计——使用FIFO的客户/服务器的应用程序(第十三章)
13.6.2 使用FIFO的客户/服务器应用程序作为学习FIFO的最后一部分内容,现在考虑怎样通过命名管道来编写一个非常简答的客户/服务器应用程序。用一个服务器进程来接受请求,对它们进行处理,最后把结果数据返回给发送请求的一方:客户。如果想要允许多个客户进行都可以向服务器发送数据,假设被处理的数据可以被拆分为一个个数据块,每个的长度都小于PIPE_BUF字节。因为服务器每次只能处原创 2015-07-15 23:33:05 · 1458 阅读 · 0 评论 -
linux程序设计——信号量(第十四章)
第14章 信号量,共享内存和消息队列在本章中,将介绍一组进程间通信的机制,它们最初是由AT&T System V.2版本的UNIX引入.由于这些机制都出现在同一个版本中并且有着相似的编程接口,所以它们又常被称为IPC(Inter-Process Communication,进程间通信)机制,或者被更常见的称为System V IPC.14.1 信号量当编写的程序使用了线程时原创 2015-07-16 23:12:58 · 1028 阅读 · 0 评论 -
linux程序设计——共享内存(第十四章)
14.2 共享内存共享内存是3个IPC机制中的第二个,它允许两个不相关的进程访问同一个逻辑内存.共享内存是在两个正在运行的进程之间传递数据的一种非常有效的方式.大多数共享内存的具体实现,都把由不同进程之间共享的内存安排为同一段物理内存.共享内存是由IPC为进程创建的一个特殊的地址访问,它将出现在该进程的地址空间中,其他进程可以将同一段共享内存连接到它们自己的地址空间中.所有进程都可以原创 2015-07-18 23:30:40 · 1018 阅读 · 0 评论 -
linux程序设计——消息队列(第十四章)
14.3 消息队列这章介绍第三个也是最后一个System V IPC机制;消息队列(message queue).消息队列与命名管道有许多相似之处,但少了在打开和关闭管道方面的复杂性.使用消息队列并未解决在使用命名管道时遇到的一些问题,比如管道满时的阻塞问题.消息队列提供了一种在两个不相关的进程之间传递数据的相当简单且有效的方法.与命名管道相比,消息队列的优势在于,它独立与发送和原创 2015-07-19 22:52:50 · 644 阅读 · 0 评论 -
linux程序设计——使用信号量(第十四章)
14.1.4 使用信号量下面将用完整的编程接口为二进制信号量创建一个简单得多的PV类型接口,然后用这个非常简单的接口来演示信号量是如何工作的。用程序sem1.c来试验信号量,该程序可以被多次调用。通过一个可选的参数来指定程序是负责创建信号量还是负责删除信号量。用两个不同字符的输出来表示进入和离开临界区域。如果程序启动时带有一个参数,它将在进入和退出临界区域时打印字符X;而程序的其原创 2015-07-17 23:57:03 · 900 阅读 · 0 评论 -
linux程序设计——IPC状态命令(第十四章)
14.5 IPC状态命令虽然X/Open规范并没有定义它们,但大多数linux系统都提供了一组命令,用于从命令行上访问IPC信息以及清理游离的IPC机制.它们是ipcs和ipcrm命令,这两个命令对于开发程序非常有用.IPC机制一个让人烦恼的问题是:编写错误的程序或者因为某些原因而执行失败的程序把它的IPC资源(如消息队列中的数据)遗留在系统中,并且这些资源在程序结束后很长时间仍然在原创 2015-07-19 23:10:35 · 1024 阅读 · 0 评论 -
linux程序设计——主机字节序和网络字节序(第十五章)
15.2.10 主机字节序和网络字节序当在基于intel处理器的linux机器上运行新版本的服务器和客户程序时,可以用netstat命令查看网络连接状况.它显示了客户/服务器连接正在等待关闭.连接将在一段超时间之后关闭,如下所示:可以看到这条连接对应的服务器和客户的端口号.local address一栏显示的是服务器,而foreign address一栏显示的是远程客户(即使是在原创 2015-07-22 23:43:25 · 1540 阅读 · 0 评论 -
linux程序设计——命名管道FIFO(第十三章)
13.6 命名管道:FIFO至此,还只能在相关的程序之间传递数据,即这些数据是由一个共同的祖先进程启动的。但如果想在不相关的额进程之间交换数据,这还不是很方便。可以用FIFO文件来完成这项工作,它通常也被称为命名管道(named pipe)。命名管道是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但它的行为却和此前见过的没有名字的管道类似。可以在命令行上创建命名管道,也可原创 2015-07-13 22:27:19 · 1347 阅读 · 0 评论 -
linux程序设计——父进程和子进程(第十三章)
13.5 父进程和子进程在接下来的对pipe调用的研究中,将学习如何在子进程中运行一个与父进程完全不同的另外一个程序,而不是仅仅运行一个相同程序.使用exec调用来完成这一项工作.这里的一个难点是,通过exec调用的进程需要知道应该访问哪个文件描述符.在前面的例子中,因为子进程本身有file_pipes数据的一份副本(点击打开"fork复制进程映像"链接),所以这并不成为问题.但经过ex原创 2015-07-11 23:29:19 · 1254 阅读 · 0 评论 -
linux程序设计——pipe调用在两进程之间通信(第十三章)
13.4 pipe调用在看过高级的popen函数之后,再来看看底层的pipe函数.通过这个函数在两个程序之间传递数据不需要启动一个shell来解释请求的命令.它同时提供了对读写数据的更多控制.pipe函数的原型如下所示:#include int pipe(int file_descriptor[2]);参数:是一个由两个整数类型的文件描述符组成的数组.返回值:该函数在数组中原创 2015-07-10 18:51:46 · 3062 阅读 · 0 评论 -
linux程序设计——数据库(第七章)
7.3 数据库这篇为linux的dbm数据库,代码在dbm数据库代码下载。可以使用文件来存储数据,为什么还需要数据库呢?因为在有些情况下,数据库的特性提供了解决问题的更好的办法。与使用文件来存储数据相比,使用数据库有如下两方面的优势:1.可以存储长度可变的数据记录,这对平面的、非结构化的文件来说实现起来有点困难2.数据库使用索引来有效地存储和检索数据。这样做的一个显著优点是这个索引不必原创 2015-06-16 21:26:55 · 876 阅读 · 0 评论 -
linux程序设计——文件锁定(第七章)
7.2 文件锁定这篇为linux的文件锁定,代码在文件锁定代码下载。文件锁定是多用户、多任务操作系统中一个非常重要的组成部分。程序经常需要共享数据,而这通常是通过文件来实现的。因此,对于这些程序来说,建立某种控制文件的方式就非常重要。只有这样,文件才可以通过一种安全的方式更新,或者说,当一个程序正在对文件进行写操作时,文件就会进入一个暂时状态,在这个状态下,如果另外一个程序尝试读这个文件,它就原创 2015-06-15 21:01:14 · 892 阅读 · 0 评论 -
linux程序设计——同时执行的线程(第十二章)
12.4 同时执行接下来编写一个程序来验证两个线程的执行是同时执行的(当然,如果是在一个单处理器系统上,线程的同时执行就需要靠CPU在线程之间的快速切换来实现).这个程序中,在两个线程之间使用轮询技术,所以效率很低,同时程序还有利用这一事实,即除局部变量之外,所有其他变量都将在一个进程中的所有线程之间共享.编写程序thread2.c,在thread1.c上增加了另外一个文件范围变量来原创 2015-07-05 13:57:18 · 859 阅读 · 0 评论 -
linux程序设计——select调用和多客户(第十五章)
15.4.1 select系统调用在编写linux应用程序时,经常会遇到需要检查好几个输入的状态才能确定下一步行动的情况.例如,像终端仿真器这样的通信程序,需要有效地同时读取键盘和串行口.如果是在一个单用户系统中,运行一个"忙等待"循环还是可以接受的,它不停地扫描输入设置看是否有数据,如果有数据到达就读取它,但这种做法很消耗CPU的时间.select系统调用允许程序同时在多个底层文件原创 2015-07-26 23:32:20 · 817 阅读 · 0 评论 -
linux程序设计——把管道用作标准输入和输出(第十三章)
13.5.1 管道关闭后的读操作接下来先研究一下打开的文件描述符,此前一直采取的是让读进程读取一些数据然后直接退出的方式,并假设linux会把清理文件当作是在进程结束时应该做的工作的一部分.但大多数从标准输入读取数据的程序采用的确实与此前的例子非常不同的另外一种做法.通常,它们并不直到有多少数据需要读取,所以往往采用循环的方法,读取数据--处理数据--读取更多的数据,直到没有数据可读原创 2015-07-12 23:11:00 · 3449 阅读 · 0 评论 -
linux程序设计——进程管道(第十三章)
第13章 进程间通信:管道在第11章,看到了一种在两个进程间发送消息的非常简单的方法:使用信号量.创建通知时间,通过它引起响应,但传送的信息只限于一个信号值.在本章中,将介绍管道,通过它进程之间可以交换更有用的数据.13.1 什么是管道当从一个进程连接数据流到另一个进程时,使用术语管道(pipe)。通常是把一个进程的输出通过管道连接到另一个进程的输入。这实际上就是把原创 2015-07-08 21:25:35 · 745 阅读 · 0 评论 -
linux程序设计——管道输出数据到popen(第十三章)
13.3 将输出送往popen看过捕获外部程序输出的例子后,再来看一个将输出发送到外部程序的示例程序popen2.c,它将数据通过管道送到另一个程序.在这里使用的是od(八进制)命令.编写程序popen2.c,它非常类似popen1.c,唯一的不同是这个程序将数据写入管道,而不是从管道中读取./*******************************************原创 2015-07-09 20:31:17 · 1760 阅读 · 0 评论