Linux
文章平均质量分 63
芳草源
路漫漫其修远兮,吾将上下而求索
展开
-
Linux下的环境变量以及其中PATH环境变量小结
的原创 2014-11-12 19:33:38 · 876 阅读 · 0 评论 -
套接字&套接字地址结构和bind()函数
我们都知道在网络编程中,可以调用socket()函数来获取一个套接字描述符。但是,socket()函数的作用只是返回一个很小的非负整数值吗?并非如此,socket()函数的作用是创建套接字的。创建套接字的流程如下socket()函数会触发内核调用sys_socket()函数,然后sys_socket()函数会调用sock_create()函数。此函数会根据我们在原创 2015-08-03 22:35:38 · 4721 阅读 · 1 评论 -
线程同步之条件变量
进程空间中有一个存储量A,该进程空间内存在多个线程,这多个线程都会访问到A,或读或写,为了保障每个线程当前读到的是正确的A而不是别的线程正在修改过程中的A,我们在访问A之前需要对A进行加锁,使得我们在访问A的时候别的线程禁止访问A,这是互斥量锁。或者允许多个线程同时读A,这是读写锁。还有一种情况,有些线程也需要访问A,但是它只是想在A达到某个值的时候才做一些事情,即值关心达到某种状态下的A。比如线原创 2015-08-14 16:35:04 · 424 阅读 · 0 评论 -
Linux中的用户切换(root授权)
Linux是一个多用户系统,但是其中只有一个超级用户root,root用户拥有许多的特权,例如可以执行一些系统命令,查看/etc/shadow等一些配置文件。而普通用户一般只能够在自己的home里面进行一些操作,或者可以进入一些其它文件查看,但是一般都不能对其进行任何修改操作。所以我们以普通用户登录进行一些操作的时候经常会碰到“Permission denied”这样子的错误提示,即权限不允许。这样原创 2015-08-28 19:59:33 · 12738 阅读 · 0 评论 -
线程属性:pthread_addr_t
在多线程环境下,有很多对象,像是线程、互斥量等,我们需要使用这些对象来调整和同步线程,因此,这些对象需要包括很多的特征属性,我们为每种对象设计了一种属性结构,属性结构可以包括多个属性。然后可以将属性结构对象与对象相关联,我们就可以通过调整属性来处理线程。我们为每种属性结构设计了同一套使用模式,包括:属性对象与线程对象关联、初始化属性对象、销毁属性对象、获取属性对象里面的具体某个属性值、设置属性对象原创 2015-08-13 21:06:53 · 908 阅读 · 0 评论 -
fork()、COW和vfork()的区别
一个进程可以通过调用fork()或者vfork()函数来创建一个新进程,调用进程被成为父进程,产生的新进程叫做子进程。而在调用(以fork()为例)fork()的时候,会产生两个返回值,一个是返回给父进程,另一个是返回给子进程。而用户可以通过返回值来判断哪个是父进程,哪个是子进程。在子进程中返回值为0,而在父进程中的返回值为子进程ID。这种安排是有理由的。一个进程可以有多个子进程,但是却只能有一个原创 2015-07-28 15:26:20 · 2110 阅读 · 0 评论 -
Linux中的硬链接和软链接
在Windows操作系统中,我们经常会给一个文件创建一个快捷方式到桌面上,给其取一个自定义的文件名,然后可以通过该快捷方式来操作该文件,比较方便地共享了该文件。在Linux中也有类似快捷方式的方法来实现文件的共享,分别是文件的硬链接和软连接。硬链接我们知道在Linux的文件系统中,一个文件在磁盘分区中对应一个inode和多个block,inode用来记录文件的属性信息,而block用来存放文件的原创 2015-08-27 11:27:35 · 2189 阅读 · 0 评论 -
Unix中的僵尸进程
现实中的僵尸是一种似死非死的状态——一直在人间四处游走,但是却不能做一些活人能做的事情。而对于僵尸进程,与这个有些类似,它不能向一般进程那样来执行程序、被调度而占用CPU,但是它却不能消失,因为它还没将它的“死讯”告诉它的父进程和系统,它得让别人知道它已经死了,免得别人还来找它干活它却啥都不能干。我们需要了解到,进程的终止是一件异步事件,即是一件可能随时都会发生的事情。原创 2015-07-30 10:18:55 · 909 阅读 · 0 评论 -
在子进程中调用exit()函数对标准I/O流的影响
我们知道exit()函数是用来终止程序用的,它将调用exit系统调用,将程序状态作为参数返回给内核。但是之于_exit()和_Exit(),exit()的不同之处在于,exit()在调用exit系统调用之前,它将做一些最后的处理,包括两个部分:调用由atexit()注册的终止处理程序;关闭打开的流。这里我们要讨论的是第二点。fork()我们都知道,由fork()创建的子进程是父进程的副原创 2015-07-28 16:19:44 · 2463 阅读 · 0 评论 -
Linux进程的实际用户ID和有效用户ID
在Linux中,每个文件都有其所属的用户和用户组,默认情况下是文件的创建者,也可以根据chown和chgrp来修改文件所属的用户和用户组。文件的属性存放在属性结构stat中,其中有st_uid和st_gid标志着。先举个例子。假设现在系统中有两个用户liz和hlf,有一个程序文件file的所属用户为hlf。然后使用liz用户登录系统,运行file文件,则运行进程process有一个实际原创 2015-08-10 19:05:03 · 4674 阅读 · 1 评论 -
Linux默认shell—bash shell的优点
在Linux操作系统中,用户没有办法跟内核直接交流,内核能够控制硬件的操作,并且向外提供系统调用接口,而在系统调用之上,可以有公用函数库,可以直接被应用程序调用,同时也可以有我们的shell。shell的概念很广泛,它并不是Kernel的一部分,shell本身是一个用C程序编写的程序,它可以作为一种命令语言或一种程序设计语言,是一种脚本语言,根据语法和执行方面不同,其解释器也不同,常用原创 2015-08-23 22:33:45 · 6119 阅读 · 0 评论 -
Linux环境中程序的始终
首先由内核使程序执行。内核首先创建一个启动例程,然后调用exec函数使得该启动例程执行。然后启动例程从内核中取得命令行参数和环境变量值,用来调用main函数。于是开始执行main函数。在main函数中可以调用用户函数,然后可以从用户函数中通过return语句返回其主调函数。当然,我们还可以随时使得程序终止,即通过调原创 2015-07-27 20:56:51 · 429 阅读 · 0 评论 -
Linux中C程序的存储空间布局 & C++的五大存储空间
Linux中C程序的存储空间布局可以从《APUE》上面摘得下图所示,即为Linux中C程序的存储空间布局情况。从低地址到高地址依次分为五大部分1.正文段。即为代码段,它存储的是CPU执行的机器指令,这部分是共享的,即存储其中只有正文段的一个副本。另外,正文段一般都是只读的,防止程序意外修改其指令。2.初始化数据段(数据段)。这段存储空间主要存放的是全局作用域中明原创 2015-07-27 22:40:04 · 894 阅读 · 0 评论 -
在运行qt程序时遇到的collect2:ld returned 1 exit status
在Linux下运行qt程序make时遇到错误原创 2014-11-13 20:09:04 · 10155 阅读 · 3 评论 -
使用xshell远程软件在linux OS与Windows OS之间进行文件传递
今天发现了一个软件xshell原创 2014-11-05 22:45:20 · 853 阅读 · 0 评论 -
TCP/IP协议基础
TCP/IP协议基础 --------------------------------------------------------------------------------1、TCP/IP协议栈 四层模型 TCP/IP这个协议遵守一个四层的模型概念:应用层、传输层、互联层和网络接口层。 网络接口层 模型的基层是网络接口层。负责数据帧的发送和接收,帧转载 2014-10-19 16:12:17 · 811 阅读 · 1 评论 -
Linux系列:linux学习之路(入门类、编程类、内核类、工具类……)
入门类一直认为,在一个系统上学习开发之前,首先需要熟悉这个系统的使用。鉴于天朝的国情,绝大部分人第一个接触的操作系统就是Windows,因此对于这绝大部分人来说,如果要学习Linux开发,学会使用这个系统都是必不可少的一个环节。现在的Linux初学者是幸福的,随着Linux桌面环境越来越易用,入门一个新的系统是非常容易的事情。虽然命令行对于提高工作效率更加有效,但 我们完全可以把熟转载 2014-11-03 20:23:19 · 358 阅读 · 0 评论 -
Linux中Ext2文件系统整理一
*Ext2文件系统规划磁盘分区后进行格式化,这时文件系统会将inode与block规划好,除非再次进行格式化,否则不会改变。但是如今的文件系统很大,有的高达几百G,这样会是的inode与block的数量太大,这样将它们全部放在一起是不明智的,因此Ext2文件系统在格式化后采取的措施是:将整个文件系统分成多个块组(block group),各个块组内有各自独立的inode/block/super原创 2014-10-15 10:54:55 · 705 阅读 · 0 评论 -
Linux中静、动态函数库的优缺点
在编写程序的时候,我们经常会使用到函数库。函数库即为一个事先已经写好的函数的集合,其性能都是比较优秀并得到公众认可的。而我们在需要实现一些功能的时候,如果函数库里已经有该功能的实现函数,则我们可以直接使用函数库中来实现,而无需再重新编写程序代码。 在Linux操作系统中,函数库根据是否被编译到程序内部而分为静态函数库和动态函数库。静态函数库扩展名(.a)编译行为 静态函数库在编译的时候会被直原创 2015-09-09 11:00:00 · 1172 阅读 · 0 评论