![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux程序及使用
ljx0305
这个作者很懒,什么都没留下…
展开
-
[转+总结]Linux虚拟系统安装VMware Tools总结
一、VMware Tools安装手记(For Linux Guest OS) 为什么要装 VMware Tools? 因为它可以改善 Virtual Machine 的运行性能,而且可以让 Host OS 和 Guest OS 互通有无,这样我们就不用伤脑筋,要架设什么服务器,来沟通两个 OS,现在就让我们开始吧! VMware Tools所在位置:VMware 安装路径 /VMware/VMw转载 2008-07-16 22:21:00 · 732 阅读 · 0 评论 -
Linux 下Socket编程基础
Linux的兴起可以说是Internet创造的一个奇迹。Linux作为一个完全开放其原代码的免费的自由软件,兼容了各种UNIX标准(如POSIX、UNIX System V 和 BSD UNIX 等)的多用户、多任务的具有复杂内核的操作系统。在中国,随着Internet的普及,一批主要以高等院校的学生和ISP的技术人员组成的Linux爱好者队伍已经蓬勃成长起来。越来越多的编程爱好者也逐渐酷爱上这原创 2008-07-17 13:50:00 · 676 阅读 · 0 评论 -
gcc and g++ 编译器和gdb调试器
gcc and g++分别是gnu的c & c++编译器gcc/g++在执行编译工作的时候,总共需要4步1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]4.连接目标代码,生成可执行程序[链接器ld][参数详解]-x language filenam转载 2008-07-17 14:42:00 · 695 阅读 · 0 评论 -
make指南
译者按: 本文是一篇介绍 GNU Make 的文章,读完后读者应该基本掌握了 make 的用法。而 make 是所有想在 Unix (当然也包括 Linux )系统上编程的用户必须掌握的工具。如果你写的程序中没有用到 make ,则说明你写的程序只是个人的练习程序,不具有任何实用的价值。也许这么说有点 儿偏激,但 make 实在是应该用在任何稍具规模的程序中的。希望本文可以为中国的 Unix 编原创 2008-07-17 14:12:00 · 537 阅读 · 0 评论 -
GCC参数详解
GCC参数详解 [版本] -0.13 [声明] 这篇文档是我的关于gcc参数的笔记,我很怀念dos年代我用小本子,纪录所有的dos 命令的参数.哈哈,下面的东西可能也不是很全面,我参考了很多的书,和gcc的帮助. 不全的原因是,有可能我还没有看到这个参数,另一种原因是,我可能还不会用它 不过,我会慢慢的补齐的.哈哈 如果你要转在本文章请保留我的email(pianopan@bee原创 2008-07-17 22:41:00 · 536 阅读 · 0 评论 -
文件掩码 umask
语法格式::: umask 预设掩码数值使用说明:::建立文件和文件夹的时候预设的掩码权限(你将要去掉的权限数值表达)主要参数:::-S 以文字的方式来表示权限掩码应用实例:::(1)设要生成的文件以rw- r-- r--这样的权限字出现 umask 133 (相当于777-644=133)(2)设要生成的目录权限以rwxr-xr-x这样的权限字出现 u原创 2008-07-17 14:18:00 · 1583 阅读 · 0 评论 -
socketpair的使用
socketpair函数概要如下:#include #include int socketpair(int domain, int type, int protocol, int sv[2]);sys/types.h文件需要用来定义一些C宏常量。sys/socket.h文件必须包含进来定义socketpair函数原型。socketpair函数需要四个参数。他们是:套接口的域套接口类型使用的协议指转载 2008-07-23 10:57:00 · 1774 阅读 · 0 评论 -
捕捉到socket相关函数的错误
如果想捕捉到socket相关函数的错误,可以用下面的语句:fprintf(stderr,"Sendmsg failed. errno : %s/n",strerror(errno)); 错误信息就会显示出来了。转载 2008-07-23 11:31:00 · 806 阅读 · 0 评论 -
getrlimit和setrlimit
getrlimit和setrlimit函数 每个进程都有一组资源限制,其中某一些可以用getrlimit和setrlimit函数查询和更改。#include #include int getrlimit(int resource,struct rlimit *rlptr);int setrlimit(int resource,const struct rlimit rlptr);Both原创 2008-05-15 22:19:00 · 2492 阅读 · 1 评论 -
Linux环境下的Socket编程
什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特转载 2008-07-30 15:51:00 · 676 阅读 · 0 评论 -
Linux程式设计入门 - crypt
crypt是个密码加密函数,它是基於Data Encryption Standard(DES)演算法。 crypt基本上是One way encryption,因此它只适用於密码的使用,不适合於资料加密。 char *crypt(const char *key, const char *salt); key是使用者的密码。salt是两个字,每个字可从[a-zA-Z0-9./]中选出来,因 此同一转载 2008-07-30 16:05:00 · 606 阅读 · 0 评论 -
Linux下的时间概念
这一章我们学习Linux的时间表示和计算函数 时间的表示 时间的测量 计时器的使用 1.时间表示 在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令的输出结果。这个时候我们可以使用下面两个函数 #include time_t time(time_t *tloc); char *ctime(const time_t *clock); time函数返回从1970年1月1日0点以来的秒转载 2008-07-30 16:13:00 · 545 阅读 · 1 评论 -
Posix多线程编程学习笔记(一)—线程基础(1)
一.什么是线程 在一个程序里的多个执行路线就叫做线程。更准确的定义是:线程是“一个进程内部的一个控制序列”。 典型的unix进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程以后,在程序设计时可以把进程设计成在同一时刻能够做不止一件事,每个线程处理各只独立的任务。 二.线程的优点(1) 通过为每种事件类转载 2008-08-01 10:45:00 · 924 阅读 · 0 评论 -
Posix多线程编程学习笔记(二)—线程属性(1)
一.线程属性 线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。 1.名称::pthread_attr_init/pthread_attr_destroy转载 2008-08-01 10:52:00 · 687 阅读 · 0 评论 -
Posix多线程编程学习笔记(二)—线程属性(2)
四、线程的调度策略 函数pthread_attr_setschedpolicy和pthread_attr_getschedpolicy分别用来设置和得到线程的调度策略。 4.名称::pthread_attr_getschedpolicy pthread_attr_setschedpolicy功能:获得/设置线程的调度策转载 2008-08-01 10:55:00 · 979 阅读 · 0 评论 -
Posix多线程编程学习笔记(二)—线程属性(3)
六、线程的作用域 函数pthread_attr_setscope和pthread_attr_getscope分别用来设置和得到线程的作用域,这两个函数的定义如下: 7.名称::pthread_attr_setscopepthread_attr_getscope功能:获得/设置线程的作用域头文件转载 2008-08-01 11:01:00 · 759 阅读 · 0 评论 -
Posix多线程编程学习笔记(三)—信号灯(1)
Posix有名信号灯 函数sem_open创建一个新的有名信号灯或打开一个已存在的有名信号灯。有名信号灯总是既可用于线程间的同步,又可以用于进程间的同步。 1.posix有名信号灯函数1.名称::sem_open功能:创建并初始化有名信号灯头文件:#include 函数原形:转载 2008-08-01 11:08:00 · 839 阅读 · 0 评论 -
Posix多线程编程学习笔记(三)—信号灯(3)
4.posix有名信号灯应用于多进程下面就是应用Posix有名信号灯的一个小程序。用它来限制访问共享代码的进程数目。#include #include #include #include void print(pid_t);sem_t *sem; /*定义Posix有名信号灯*/int val; /*定义信号灯当前值*/ in转载 2008-08-01 11:12:00 · 831 阅读 · 0 评论 -
Posix多线程编程学习笔记(四)—互斥量(1)
一、什么是互斥锁 另一种在多线程程序中同步访问手段是使用互斥量。程序员给某个对象加上一把“锁”,每次只允许一个线程去访问它。如果想对代码关键部分的访问进行控制,你必须在进入这段代码之前锁定一把互斥量,在完成操作之后再打开它。 互斥量函数有 pthread_mutex_init 初始化一个互斥量 pthread_mut转载 2008-08-01 11:13:00 · 728 阅读 · 0 评论 -
Posix多线程编程学习笔记(四)—互斥量(2)
四、互斥锁属性 线程和线程的同步对象(互斥量,读写锁,条件变量)都具有属性。在修改属性前都需要对该结构进行初始化。使用后要把该结构回收。我们用pthread_ mutexattr_init函数对pthread_mutexattr结构进行初始化,用pthread_mutexattr_destroy函数对该结构进行回收。 4名称::pthre转载 2008-08-01 11:14:00 · 865 阅读 · 0 评论 -
Posix多线程编程学习笔记(五)—条件变量(1)
一、什么是条件变量 与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。 条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。转载 2008-08-01 11:39:00 · 797 阅读 · 0 评论 -
Posix多线程编程学习笔记(五)—条件变量(2)
下面的程序是经典的生产者/消费者的例证。#include #include #include #define MAX 5 pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER; /*初始化互斥锁*/pthread_cond_t=PTHREAD_CODE_INITIALIZER; /*初始化条件变量*/转载 2008-08-01 13:47:00 · 868 阅读 · 0 评论 -
Posix多线程编程学习笔记(六)—共享内存(1)
一、什么是共享内存区共享内存区是最快的可用IPC形式。它允许多个不相关的进程去访问同一部分逻辑内存。如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核。这样就可以减少系统调用时间,提高程序效率。共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在进程的地址空间中。其他进转载 2008-08-01 13:49:00 · 961 阅读 · 0 评论 -
Posix多线程编程学习笔记(六)—共享内存(2)
三、posix共享内存函数posix共享内存区涉及两个步骤:1、指定一个名字参数调用shm_open,以创建一个新的共享内存区对象或打开一个以存在的共享内存区对象。2、调用mmap把这个共享内存区映射到调用进程的地址空间。传递给shm_open的名字参数随后由希望共享该内存区的任何其他进程使用。 5.名称::shm_open功能:转载 2008-08-01 13:51:00 · 1238 阅读 · 0 评论 -
Posix多线程编程学习笔记(六)—共享内存(3)
五、共享内存区的写入和读出 上面我们介绍了mmap函数,下面我们就可以通过这些函数,把进程映射到共享内存区。然后我们就可以通过共享内存区进行进程间通信了。 下面是共享内存区写入的例子:/*shm_write.h写入/读出共享内存区*/#include #include #include #include int转载 2008-08-01 13:53:00 · 995 阅读 · 0 评论 -
Linux中链接库的创建和使用
在/usr/lib目录下面,我们会看到许多的文件形如:libxxx.so,libxxx.a这样的形式。libxxx.a我们称之为静态链接库,或者简称为链接库,libxxx.so称之为共享链接库,或者是动态链接库。=== Archives === 我们编程的时候经常使用一些库,例如我们在编写网络捕获程序的时候,我么你使用libpcap,写网络发包函数的时候,我们使用libnet库。 我们转载 2008-05-15 22:29:00 · 781 阅读 · 1 评论 -
linux下信号编程简介——不可靠的信号
linux下信号编程简介——不可靠的信号( 作者:mikespook | 发布日期:2002-12-8 | 浏览次数:135 )关键字:linux,信号,signal() 前言: 本文章只是为了给广大和我一样的菜鸟一个指引。如果你是高手,或对编程毫无兴趣。建议请不要在此浪费时间。 信号是什么?其实这是一个很有意思的东西。比如说汽车行驶在路上相互鸣笛这就是信号;同样遇到红灯必须停转载 2008-05-15 22:13:00 · 1573 阅读 · 1 评论 -
如何在Linux中添加新的系统调用
系统调用是应用程序和操作系统内核之间的功能接口。其主要目的是使得用户可以使用操作系统提供的有关设备管理、输入/输入系统、文件系统和进程控制、通信以及存储管理等方面的功能,而不必了解系统程序的内部结构和有关硬件细节,从而起到减轻用户负担和保护系统以及提高资源利用率的作用。 Linux操作系统作为自由软件的代表,它优良的性能使得它的应用日益广泛,不仅得到专业人士的肯定,而且商业化的应用也是如火如荼。转载 2008-07-30 16:46:00 · 984 阅读 · 0 评论 -
Linux程式设计入门 - fork, pthread, and signals
在UNIX程式设计中,学会fork及signal的运用,算是相当基本的功夫。 fork()及signal经常运用在daemon守护神这一类常驻程式,另外像 a4c.tty/yact/chdrv这些中文终端机程式也有用到,一般如 Mozilla/Apache/Squid等大程式几乎都一定会用到。 虽然在UNIX下的程式写作,对thread的功能需求并非很大,但thread在现代的 作业系统中,几乎转载 2008-07-30 16:47:00 · 653 阅读 · 0 评论 -
Posix多线程编程学习笔记(一)—线程基础(2)
6.名称::pthread_detach功能:使线程进入分离状态。头文件:#include 函数原形:int pthread_detach(pthread_t tid);参数: 返回值:若成功则返回0,否则返回错误编号。转载 2008-08-01 10:07:00 · 693 阅读 · 0 评论 -
文件描述符
文件描述符是个很小的正整数,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。 文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。 文件描述符的缺点:不能移植到UNIX以外的系统上去,也不直观。 基于文件描述符的输入输出函数: open:打开一个文件,并指定访问该文件的方式,调用成功后返回一个文件描述符。 cre转载 2008-08-03 10:37:00 · 713 阅读 · 0 评论 -
条件变量
条件变量 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 1. 创建和注销 条件变量和互斥锁一样,都有静态动态两种创建方式,静态方式使用PTHREAD_COND_INITIALI转载 2008-08-04 09:35:00 · 3935 阅读 · 0 评论 -
关于SO_REUSEADDR的使用说明
考WINDOWS 网络编程技术 1. 可以对一个端口进行多次绑定,一般这个是不支持使用的; 2. 对于监听套接字,比较特殊。如果你定义了SO_REUSEADDR,并且让两个套接字在同一个端口上进行接听,那么对于由谁来ACCEPT,就会出现歧义。如果你定义个SO_REUSEADDR,只定义一个套接字在一个端口上进行监听,如果服务器出现意外而导致没有将这个端口释放,转载 2008-08-04 08:43:00 · 1019 阅读 · 0 评论 -
linux命令
df -k 查看空间大小gunzip 解gz文件cpio 解cpio文件原创 2008-08-05 17:13:00 · 755 阅读 · 0 评论 -
linux进程间的同步方法
进程间通讯(IPC)方法主要有以下几种: 管道/FIFO/共享内存/消息队列/信号 1.管道中还有命名管道和非命名管道(即匿名管道)之分,非命名管道(即匿名管道)只能用于父子进程通讯,命名管道可用于非父子进程,命名管道就是FIFO,管道是先进先出的通讯方式 2.消息队列是用于两个进程之间的通讯,首先在一个进程中创建一个消息队列,然后再往消息队列中写数据,而另一个进程则原创 2008-06-01 11:47:00 · 5289 阅读 · 1 评论 -
临界区(Critical section)与互斥体(Mutex)的区别
临界区(Critical section)与互斥体(Mutex)的区别1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥体可以用于对象进程间或线程间的互斥访问。2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥体是内核对象,在核心态进行锁操作,速度慢。3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥体可用。转载 2008-06-01 20:40:00 · 2819 阅读 · 0 评论 -
socket服务器模型
多线程有三种模式: 1、一个请求一个线程。 2、一个连接一个线程。 3、预先开一个线程池队列,等待客户机的连接。 我看了一下Apache1.3.7的源代码,主要是看了一下其中SOCKET网络服务的结构,其中使用select + thread pool的过程大体如下: 首先创建一个全局的job_list链表,用于存放使用select方式(acc转载 2008-06-05 21:50:00 · 1050 阅读 · 0 评论 -
os的线程模型
os的线程模型有3种 用户态, 核心态 混合态 , 用户态就是 纯粹的用户级线程,对于内核是透明的,这样的好处是上下文切换的时候很快. 但是不好的就是一个线程阻塞会阻塞整个进程. 核心态也就是所谓的轻量级进程.单个线程阻塞不会阻塞整个进程.是基本的调度单位. 混合态有2种 1:1 比如linux种使用的native原创 2008-06-05 21:36:00 · 683 阅读 · 0 评论 -
Linux线程初探
1 概述 1.1 线程的定义 传统的UNIX进程概念在开发有分布式系统中的许多应用时已经显得力不从心(有时 连简单的窗口响应问题都很难做好)。这些问题的最好解决之道就是线程,线程推 广了进程的概念使一个进程可以包含多个活动(或者说执行序列等等)。如今,由 于线程概念的普及,在UNIX系统中已经普遍实现了线程机制,开发并发应用的程序 员现在也可以广泛接触到线程的函数库转载 2008-06-05 22:00:00 · 666 阅读 · 0 评论 -
信号基本原理
信号基本原理 Linux是一种多用户多任务的操作系统,系统内会有多个进程存在。无论是操作系统与用户进程之间,还是用户进程之间,经常需要共享数据和交换信息。进程间相互通信的方法有多种,信号便是其中最为简单的一种,它用以转载 2008-09-09 13:54:00 · 2286 阅读 · 3 评论