
linux
adlics_r
这个作者很懒,什么都没留下…
展开
-
简答题——系统调用与库函数的区别
系统调用与库函数的区别? (1)库函数是语言或应用程序的一部分,而系统调用是内核提供给应用程序的接口,属于系统的一部分 (2)库函数在用户地址空间执行,系统调用是在内核地址空间执行,库函数运行时间属于用户时间,系统调用属于系统时间,库函数开销较小,系统调用开销较大 (3)库函数是有缓冲的,系统调用是无缓冲的 系统调用依赖于平台,库函数并不依赖原创 2016-12-26 20:31:40 · 507 阅读 · 0 评论 -
Linux下的内存分配
在空间中的内存分配如图所示 通过以下程序可以更加清晰的看出地址之间的联系:#include <stdio.h>int add(int a, int const e){ int c; int d = 0; static f = 1; c = a + e; printf("local(null) &c = %p\n", &c); printf("local原创 2016-10-20 23:12:40 · 605 阅读 · 0 评论 -
TCP通信
tcp_server.c#include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #define portnu原创 2016-11-10 22:16:29 · 218 阅读 · 0 评论 -
exec函数族
启动进程:exec族共用头文件:#include int execl(const char *path,const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execle(const char *path,const char *arg, ..., char * const envp[]);in转载 2016-10-19 21:42:10 · 482 阅读 · 0 评论 -
Linux下的目录及其操作命令(四、链接文件的命令)
Linux具有为一个文件起多个名字的功能,称为链接。被链接的文件可以存放在相同目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。被链接的文件可以有相同的文件名,但是不能放在相同目录下,这样只改变一个目录下的该文件,就完成了所有目录下同名链接文件的修改。 文件链接有两种形式,即硬链接和符号链接1.硬链接建立硬链接时,在别的目录或本目录中增加目标文件的一个目录项,这样一个文件就登记在原创 2016-10-07 16:29:09 · 410 阅读 · 0 评论 -
用共享内存实现生产者和消费者的机制
shm_com.h#include<unistd.h>#include<stdlib.h>#include<stdio.h>#include<string.h>#include<sys/types.h>#include<sys/ipc.h>#include<sys/shm.h>#define SHM_BUFF_SZ 2048struct shm_buff{ int pid;转载 2016-10-29 20:57:59 · 2127 阅读 · 0 评论 -
Linux下的目录及其操作命令(三、改变工作目录和显示目录内容的命令)
1.cd命令该命令用来工作目录 1)一般格式 cd [dirname] 2)说明 该命令带有唯一参数,即表明目标目录路径名。 为了从系统中的任何地方返回到主目录,可以使用不带任何参数的cd命令2.pwd命令该命令显示出当前工作目录的绝对路径 1)一般格式 pwd 2)说明 该命令不带任何参数3.ls命令该命令列出指定目录的内容 1)一般格式 ls [选项] [目录或文件] 2原创 2016-10-06 20:02:47 · 1599 阅读 · 0 评论 -
Linux下的目录及其操作命令(二、创建和删除目录的命令)
1.mkdir命令该命令用来创建目录 1)一般格式 mkdir [选项] dirname 2)说明 该命令创建由dirname命名的目录。如果在目录名前面没有加任何路径名,则目录创建在该文件下;如果给出目录,那么在指定的目录下创建目录 3)常用选项 -p 一次可建立多个目录2.rmdir命令该命令用来删除空的子目录 1)一般格式 rmdir [选项] dirname 2)说明原创 2016-10-05 23:08:55 · 468 阅读 · 0 评论 -
网络通信4:UDP
sendto 作用:传送socket数据,UDP使用较多 函数原型:int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to,int len); 参数:sockfd:套接字描述符 msg:发送的消息内存 len:消息长度 toaddr:要发送消息的目的地址原创 2016-11-08 23:03:49 · 271 阅读 · 0 评论 -
堆和栈的概念
定义:栈: 栈是为执行线程留出的内存空间。当函数被调用的时候,栈顶为局部变量和一些 bookkeeping 数据预留块。当函数执行完毕,块就没有用了,可能在下次的函数调用的时候再被使用。栈通常用后进先出(LIFO)的方式预留空间;因此最近的保留块(reserved block)通常最先被释放。这么做可以使跟踪堆栈变的简单;从栈中释放块(free block)只不过是指针的偏移而已。 1.栈的使用原创 2016-10-18 18:32:55 · 384 阅读 · 0 评论 -
Linux下的目录及其操作命令(一、目录结构)
Linux系统中,除根目录外,所有文件和目录都包含在相应的目录文件中。1.用户主目录当注册进入系统时,主目录就是用户当前工作目录。2.路径名迄今为止,用户所看到的文件仅是主目录下的文件。 存在两种路径名:绝对路径名,相对路径名绝对路径名 在Linux操作系统中,每个文件都有其唯一的绝对路径名,他是沿着层次树,从根目录开始,由到达相应文件的所有目录名链接而成。 绝对路径名也是全路名称。可以使用p原创 2016-10-04 22:22:30 · 335 阅读 · 0 评论 -
进程
概念 Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。 也就是说,每个进程都是一个独立的运行单位,拥有各自的权利和责任。其中,各个进程都运行在独立的虚拟地址空间,因此,即使一个进程发生异常,它也不会影响到系统中的其他进程。进程的ID#include <sys/types.h> #include <unistd.h>pid_t getpid(void) //原创 2016-10-27 21:48:43 · 353 阅读 · 0 评论 -
带缓存的I/O操作
fopen函数的作用: 打开文件 函数的原型: FILE *fopen(const char *pth, const char *mode) mode: r:读,文件必须存在; r+:打开可读写,文件必须存在; w:打开只写文件,文件不存在就会创建文件; 文件清0; w+:打开可读写的文件, a:附加的形式打开只写文件,不存在就创建,存在就写到原来的文原创 2016-10-17 22:47:13 · 347 阅读 · 0 评论 -
Linux C——poll函数实现多路复用
多路复用 多路复用一般用于I/O操作可能会被阻塞的情况,对可能会有阻塞的I/O的管道、网路进行编程。 采用管道函数创建有名管道,使用select函数替代使用poll函数实现多路复用: 创建两个有名管道,获取3个文件描述符(2个管道1个标准输入),然后初始化读文件描述符,select监视文件描述符的文件读写,管道1输出到屏幕上,管道2输出到屏幕上,标准输入‘Q’来进行判读是否退出。selec转载 2016-10-31 17:24:24 · 463 阅读 · 0 评论 -
多线程(1)
概念 1.线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。 2.一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。 3.进程——资源分配的最小单位,线程——程序执行的最小单位 4.进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,原创 2016-10-31 19:27:18 · 213 阅读 · 0 评论 -
简答——进程死锁
什么是进程死锁?造成进程死锁的原因? 如果多个进程同时占有对方需要的资源而同时请求对方的资源,并且在得到请求前不会释放所占有的资源,那么就会导致死锁的发生,也就是进程不能实现同步。 产生死锁的原因可以归结为以下两点: (1)资源竞争;(2)进程间推进顺序非法原创 2016-12-22 21:52:10 · 419 阅读 · 0 评论 -
shell的编程入门
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。Linux的Shell种类众转载 2016-11-26 21:03:18 · 266 阅读 · 0 评论 -
shell用法
在shell文件内部定义函数并引用: 代码如下: [~/shell/function]# cat factorial.sh #!/bin/bash function factorial { factorial=1 for (( i=1;i <= $1;i++ )) do factorial=$[ $factorial * $i ]转载 2016-11-25 22:26:01 · 390 阅读 · 0 评论 -
shell的概念
此博客来源于百度百科 什么是shellLinux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。 shell是一个命令语言解释器,它拥有自转载 2016-11-24 20:56:54 · 502 阅读 · 0 评论 -
(综合)进程间通信方式
1)管道 管道分为有名管道和无名管道 无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系。无明管道一般用于两个不同进程之间的通信。当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式。 有名管道也是一种半双工的通信方式,但是它允许无亲缘原创 2016-12-12 20:45:00 · 439 阅读 · 0 评论 -
mmap函数
mmap函数是unix/linux下的系统调用,来看《Unix Netword programming》卷二12.2节对mmap的介绍: The mmap function maps either a file or a Posix shared memory object into the address space of a process.We use this function for转载 2016-11-18 21:43:06 · 333 阅读 · 0 评论 -
fgets与gets的区别
1.fgets函数 功能:用于从文件中读取一字符串 函数原型char *fgets(char *buf, int bufsize, FILE *stream);参数 *buf: 字符型指针,指向用来存储所得数据的地址。 bufsize: 整型数据,指明存储数据的大小。 *stream: 文件结构体指针,将要读取的文件流。 返回值: 操作成功,返回的是msg的值,假如碰到文件结束或错误时原创 2016-11-14 20:31:41 · 767 阅读 · 0 评论 -
终止进程的工具kill,killall,pkill,xkill
kill命令 杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志。 首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令:# kill -pid注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其原创 2016-11-17 18:55:56 · 622 阅读 · 0 评论 -
fgets函数使用
fgets 函数使用 函数原型char *fgets(char *buf, int bufsize, FILE *stream);参数 *buf: 字符型指针,指向用来存储所得数据的地址。 bufsize: 整型数据,指明存储数据的大小。 *stream: 文件结构体指针,将要读取的文件流。 返回值 成功,则返回第一个参数buf; 在读字符时遇到end-of-file,则eof指示器被原创 2016-11-13 20:15:03 · 588 阅读 · 0 评论 -
多线程(2)
pthread_mutex_init 函数作用:初始化互斥锁 函数原型:init pthreaad_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutex *attr_t) 函数参数:mutex:互斥锁 attr_t:快速互斥锁 返回值:成功为0,失败<0pthread_mutex_lock 函数作用:对互斥锁上锁原创 2016-11-01 20:40:56 · 294 阅读 · 0 评论 -
scanf,fscanf,sscanf函数
scanf 函数作用:格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。 函数原型int scanf(const char * restrict format,...);函数参数:函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。 返回值:原创 2016-11-16 19:31:51 · 400 阅读 · 0 评论 -
pid_t的类型
创建进程时经常会用到进程号的类型定义:pid_t。我们都知道这个类型定义实际上就是int型。但是在linux下的c中的头文件中这个定义到底是怎么定义的呢?今天就把以前找这个定义的过程贴出来:1.首先在/usr/include/sys/types.h中有如下定义#include <bits/types.h> ......#ifndef __pid_t_definedtypedef __pi转载 2016-11-12 20:02:45 · 297 阅读 · 0 评论 -
Linux下的文件操作命令(五、文件内容统计命令)
wc命令统计指令文件的字节数、字数、行数,并将统计结果显示出来。 1)一般格式 wc【选项】 文件 2)说明 wc命令统计指定文件的字节数、字数、行数,并输出结果。如果没有给出文件名或者文件名为“-”,则从标准输入读取数据。如果多个文件一起进行统计,则wc最后给出所有指定文件的总统计数。 3)常用选项 -c –byte 统计字节数 -l –line 统计行数 -w –words原创 2016-10-03 21:13:14 · 599 阅读 · 0 评论 -
Linux下的操作命令(四、复制、删除和移动文件的命令)
1.cp命令 cp命令将源文件或目录复制到目标文件或目录中。 1)一般格式 cp 【选项】 源文件或命令 目标文件或目录中 2)说明 如果源文件是普通文件,则该命令把它复制到指定的目标文件中;如果是目录,就需要使用“-r”选项,将整个目录下所有的文件和子目录都不复制到目标位置。 3)常用选项 -a 该选项通常在复制目录时使用。 -d 复制时保留文件链接1.rm命令 rm命令删除目原创 2016-10-02 22:38:05 · 3082 阅读 · 0 评论 -
网络通信2:TCP的函数
1.Inet_addr()函数 函数作用: 十进制转换成二进制 函数原型: int inet_addr(const char *strptr); 参数: Strptr:要转换的IP地址字符串 返回值: 成功:32位二进制IP地址(网络字节序) 出错:-12.Inet_pton函数 函数原型: int inet_pton(int family, co原创 2016-11-07 21:56:57 · 347 阅读 · 0 评论 -
Linux下的有关进程管理的命令
1.ps命令给命令查看当前系统中运行的进程信息 1)一般格式 ps 【选项】 2)说明 该命令是查看进程状态的最常用的命令,它提供关于进程的许多信息。3)常用选项 -a 显示系统中与tty相关的所有进程的信息 -e 显示所有进程的信息 -f 显示进程的所有信息 -l 以长格式显示进程信息2.kill命令该命令用来终止一个进程的运行 1)一般格式 kill 【-s 信号|-p】 【-原创 2016-10-12 16:31:07 · 643 阅读 · 0 评论 -
管道
1)特点: 1.管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。 2.一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据 3.管道提供了简单的流控制机制,进程试图读空管道时,进程将阻塞。同样,管道已经满时,进程再试图向管道写入数据,进程将阻塞 4.管道包括无名管道和有名管道两种,前者用于父进程和子进程间的通信,后者可用于运行于同一系统中原创 2016-10-22 21:16:47 · 322 阅读 · 0 评论 -
多线程(3)
头文件:#include <semaphore.h> sem_init 函数的作用:初始化信号量 原型:int sem_init(sem_t *sem,int pshared,unsigned int value) 参数:sem:信号量指针 pshared:0 value:信号量的初始化 返回值:成功:0,出错-1 信号量的PV操作原创 2016-11-02 23:24:32 · 300 阅读 · 0 评论 -
多个用户对一个文件操作
转载自他人博客 如果多个用户对一个文件进行操作的时候,如何解决,考虑用文件锁的形式和多路复用形式Linux下多个进程或线程同时对一个文件进行写操作,使用flock(锁定文件或解除锁定),可以解决冲突。 头文件 #include<sys/file.h>定义函数 int flock(int fd,int operation);函数说明 flock()会依参数operation所指定的方式对参数fd所转载 2016-10-21 22:08:57 · 537 阅读 · 0 评论 -
Linux下的联机帮助命令
1.man命令给命令格式化并显示某一命令的联机帮助手册页 1)一般格式 man 【选项】 命令名2)说明 命令名称为参数。3)常用选项 -M 路径 -P 命令 -S 章节 -D 既显示手册页内容,也显示检查信息2.help命令该命令可以查看所有shell内置命令的帮助信息 1)一般格式 help 命令2)说明 shell是Linux命令解释程序,它解释接收的命令并予以执行。原创 2016-10-11 21:03:32 · 1928 阅读 · 0 评论 -
Linux下的目录及其操作命令(六、改变用户组和文件主的命令)
1.chgrp命令给命令改变文件或目录所属的用户组 1)一般格式 chgrp 【选项】 组名 文件名2)说明 该命令用来改变文件所属的用户组。其中,组名可以是用户组ID或用户组的组名。3)常用选项 -R 递归式的改变指定目录及其下面的所有子目录和文件的用户组。2.chmod命令该命令改变某个文件或目录的所有者和所属的组 1)一般格式 chmod 【选项】 组名 文件名2)说明 该命令可原创 2016-10-10 19:29:27 · 359 阅读 · 0 评论 -
Linux下的目录及其操作命令(五、改变文件或目录存取权限的命令)
使用文件命令对文件进行操作的前提是拥有相应的权限1.用户和权限1)文件主 Linux为文件都分配一个文件所有者,称为文件主,并赋予文件主唯一的注册名。对文件的控制取决于文件主或超级用户。 文件或目录的创建者对创建的文件或目录拥有特别使用权。 利用chown命令可以更改某个或目录的所有权。2)用户组 当系统管理员为用户建立账号之后,会分配一个组ID和一个特定的用户组命令。3)存取权限 Lin原创 2016-10-09 21:30:54 · 446 阅读 · 0 评论 -
Linux下文件的详细信息
以ls -l的格式输出,信息分成多列,他们依次是: 文件类型与权限 链接数 文件主 文件组 文件大小 建立或最近修改时间 文件名 例如: -rw-r–r– 2 mengqc group 198 10月20 2010 csh1 其中几个字段的含义说明如下:1)第一个字段中第一个字符表示文件类型 - 普通文件 d 目录 b 设备文件 c 字符设备文件 l 符号链接文件2)随后的9个字原创 2016-10-08 22:30:09 · 449 阅读 · 0 评论 -
工程管理器makefile的解释及简单模型
工程管理器makefile原创 2016-07-09 11:16:37 · 586 阅读 · 0 评论 -
调试器gdb
调试器gdb原创 2016-07-08 20:39:54 · 436 阅读 · 0 评论