Linux_C
文章平均质量分 65
小尼人00
人生一直在不断的探索中,才知道一些东西的真正含义,为了在探索的路途中少走弯路,早日达到心中的愿景,我认为没有什么比开阔眼界更重要的了。
展开
-
[linux] linux进程间通讯的几种方式
linux进程间通信(IPC)有几种方式,下面将将简单的简述一下: 一。管道(pipe) 管道是Linux支持的最初IPC方式,管道可分为无名管道,有名管道等。 (一)无名管道,它具有几个特点: 1) 管道是半双工的,只能支持数据的单向流动;两进程间需要通信时需要建立起两个管道; 2) 无名管道使用pipe()函数创建,只能用于父子进程或者兄弟进程之间; 3原创 2013-01-31 16:26:33 · 622 阅读 · 0 评论 -
Linux -- Chapter 11 进程与信号
Chapter 11 进程与信号 进程与信号构成了Linux操作环境的基础部分。 如何在自己的程序中启动和停止其他的进程,如何让进程收发消息,如何避免僵尸进程。 大纲 『 (1) 进程的结构、类型和调度 (2) 用不同的方法启动新进程 (3) 父进程、子进程和僵尸进程 (4) 什么是信号以及如何使用它们』11.1 什么是进程? 进程由程序代码、数据、原创 2013-06-12 15:11:46 · 845 阅读 · 0 评论 -
使用ptrace跟踪进程
系统调用ptrace对gdb这种调试器来说是非常重要的,杯具的是,相关的文档却残缺不详–除非你觉得最好的文档就是内核源码!!下面,我会试着向大家展示ptrace在gdb这类工具中的作用.1. 介绍ptrace()是一个系统调用,它允许一个进程控制另外一个进程的执行.不仅如此,我们还可以借助于ptrace修改某个进程的空间(内存或寄存器),任何传递给一个进程(即被跟踪进程)的信号(除转载 2013-06-04 20:32:32 · 1143 阅读 · 0 评论 -
玩转ptrace
下面是转帖的内容,写的很详细。但是不同的linux发行版中头文件的路径和名称并不相同。如在某些发行版中就不存在,其中定义的变量出现在和中。关于调试器技术的资料在网上是很少,即便是UNIX编程巨著《UNIX环境高级编程》中,相关内容也不多,直到我在http://www.linuxjournal.com上找到这篇文章,如获至宝,特翻译之,作为鄙人翻译技术文档的第一次尝试,必定会有不少蹩脚之处,各位转载 2013-06-05 15:01:23 · 770 阅读 · 0 评论 -
linux/unix下setuid/seteuid/setreuid/setresuid
其中setresuid()具有最清晰的语法:setresuid()被执行的条件有:①当前进程的euid是root②三个参数,每一个等于原来某个id中的一个如果满足以上条件的任意一个,setresuid()都可以正常调用,并执行,将进程的ID设置成对应的ID。例子:如果ruid=100,euid=0,suid=300则setresuid转载 2013-06-05 17:10:39 · 1131 阅读 · 0 评论 -
Chapter 11 进程与信号 @ linux
Chapter 11 进程与信号 进程与信号构成了Linux操作环境的基础部分。 如何在自己的程序中启动和停止其他的进程,如何让进程收发消息,如何避免僵尸进程。 大纲 『 (1) 进程的结构、类型和调度 (2) 用不同的方法启动新进程 (3) 父进程、子进程和僵尸进程 (4) 什么是信号以及如何使用它们』11.1 什么是进程? 进程由程序代码、数据、原创 2013-06-06 09:21:25 · 771 阅读 · 0 评论 -
awk:好用的数据处理工具
awk 也是一个非常棒的数据处理工具!sed 常常用于一整个行的处理, awk 则比较倾向于一行当中分成数个『栏位』(或者称为一个域,也就是一列)来处理。因此,awk 相当的适合处理小型的数据数据处理呢!awk 通常运行的模式是这样的:[root@www ~]# awk '条件类型1{动作1} 条件类型2{动作2} ...' filenameawk 后面接两个单引号并加上大括号 {转载 2013-06-30 22:41:05 · 826 阅读 · 0 评论 -
echo -e
echo -e 允许后面的输出进行转义原创 2013-06-30 23:38:05 · 799 阅读 · 0 评论 -
利用securecrt在linux与windows之间传输文件
SecureCRT这款SSH客户端软件同时具备了终端仿真器和文件传输功能。比ftp命令方便多了,而且服务器不用再开FTP服务了。rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具。 windows端需要支持ZModem的telnet/ssh客户端,SecureCRT就可以用SecureCRT登陆到Unix/Linux主机(telnet或ssh均可)。转载 2013-07-02 09:01:17 · 785 阅读 · 0 评论 -
My Vimrc Archive
set nocompatible " 关闭 vi 兼容模式syntax on " 自动语法高亮set number " 显示行号 " set cursorline 突出显示当前行set ruler " 打开状态栏标尺 (不错)set shiftwidth=4 " 设定 > 命令移动时的宽度为 4set smartindent原创 2013-06-10 16:23:20 · 880 阅读 · 0 评论 -
Linux socket编程学习笔记(一):socket()函数详解
from xy!#include #include 函数原型 int socket(int domain, int type, int protocol);应用程序调用socket函数来创建一个能够进行网络通信的套接字。第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET;第二个参数指定要创建的套接字类型,流套接字类型为SOCK_ST转载 2013-06-01 13:05:00 · 947 阅读 · 0 评论 -
《Shell 脚本学习指南 》 -- 背景知识与入门 [第一、二章]
《shell 脚本学习指南》 -- 《UNIX in a Nutshell》 UNIX工具集,UNIX的中心思想与软件工具设计的原则。各章介绍第1章,背景知识 : 许多软件工具设计上的哲学。 POSIX 可移植的OS接口 将设备视为文件,以及特意不将命令解释器或shell整合到OS中。 软件设计的原则 『 (1) 一次做好一件事 (2) 处理文本行,原创 2013-05-28 10:44:27 · 823 阅读 · 0 评论 -
Linux 进程操作_12
进程是应用程序在内存中的基本执行单元,同时系统资源分配的基本单位。 Linux 下几乎所有的用户管理,资源分配等操作都是通过相应进程的控制来实现的。 知识大纲 『 *1 进程的概念,包括进程的组成,进程的状态等。 *2 Linux进程, 包括进程的状态,调度信息,标识符,进程间通信相关信息的获取等。 *3 进程的创建与控制,包括进程创建函数,进程终止,获取进程信息,守护进程等。原创 2013-03-21 11:53:32 · 840 阅读 · 0 评论 -
Linux Makefile_08
多文件项目管理 Linux系统提供了一个自动生成和维护目标程序的工具,Make. 它可以根据各模块的修改情况重新编译连接目标代码。 主要内容 『 *1, GNU Make 简介。 *2, Makefile文件书写规则,包括基本规则,变量,隐含规则,伪目标,函数以及通用Makefile文件。 *3, GNU Automake简介。』 GNU Make 工具的原创 2013-03-21 11:47:12 · 773 阅读 · 0 评论 -
Linux 标准输入输出_11
标准输入输出是基于标准输入输出库实现的。 知识点大纲 『 *1 标准输入输出的基本操作,包括文件的打开与关闭,缓冲区的操作等。 *2 非格式化输入输出, 包括单个字节,字符串(行)以及数据块的输入输出。 *3 格式化输入输出。 』-11.1 标准输入输出的基本操作 标准输入输出操作是通过控制结构 FILE 进行。 文件控制结构中包含处理文件所需的全部信息,例原创 2013-03-21 11:51:37 · 907 阅读 · 0 评论 -
[Linux] Linux shell (1)
*1 echo $ var1=100 $ echo $var1 $ echo "hello world"hp@ubuntu:~$ fruit=applehp@ubuntu:~$ echo "have ${fruit}(s)"have apple(s)hp@ubuntu:~$ echo -n "hello" #忽略换行hellohp@ubuntu:原创 2013-01-25 18:39:39 · 596 阅读 · 0 评论 -
Linux C 基本应用_09
编辑器 + 编译器 + 调试工具 + 项目管理软件。 * 字符串操作, 包括字符测试,字符串拷贝,比较,查找,连接与分割等。 * 数据转换,包括字母大小写转换,字符串转换与整数,浮点数之间的转换。 * 内存分配与释放。 * 时间和日期,包括时间和日期的获取,显示以及时间的计算等。 * 其他应用,包括命令行参数的分析,用户和用户组操作以及环境变量操作。9.1 字符串操作 『 9.1.1原创 2013-03-21 11:48:17 · 858 阅读 · 0 评论 -
[Linux] 进程的虚拟地址空间
在x86体系结构中分段机制是必选的,而分页机制则可由具体的操作系统而选择,Linux通过让段的基地址为0而巧妙的绕过了基地址。因此,对于Linux来说,虚地址和线性地址是一致的。在32位的平台上,线性地址的大小为固定的4GB。并且,由于采用了保护机制,Linux内核将这4GB分为两部分,虚地址较高的1GB(0xC0000000到0xFFFFFFFF)为共享的内核空间;而较低的3GB(0x00000原创 2013-01-31 19:15:27 · 970 阅读 · 0 评论 -
[OS] 用户态和内核态的概念区别 [面试思科]
究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子:1)例子C代码1. void testfork(){ 2. if(0 = = fork()){ 3. printf(“create new process su转载 2013-03-08 20:56:17 · 1080 阅读 · 0 评论 -
Linux文件系统笔记_10
Linux文件系统 文件系统是文件存放在磁盘等存储设备上的组织方式。Linux文件系统采用了分层的体系结构,包括接口层,文件系统本身以及设备驱动程序等。 大纲 『 1, Linux文件系统简介 2, 文件的基本操作,包括创建,打开,关闭,读写,创建连接等。 3, 文件的属性,包括属性的获取与设置。 4,目录文件的操作,包括创建,删除,打开,关闭,读取,获取或原创 2013-03-21 11:51:00 · 772 阅读 · 0 评论 -
Linux下C进程管理(fork,wait,exec)
在我们编程中用的最多是函数,也就是如何函数调用。那我们如何调用函数呢?一:我们必须要知道函数的功能是什么?二:再看这个函数需要哪些参数?三:最后看返回值是什么?当我们面对一个函数时,既不知道函数的功能也不参数以及返回值时,我们该如何下手呢?必须得动手查询呗,可以使用函数手册,终端,以及书本资料等、现在就用fork,wait,exec来举例说明:fork功能:创建一个转载 2013-04-21 21:37:42 · 1065 阅读 · 0 评论 -
利用SecureCRT上传、下载文件(使用sz与rz命令),超实用!
利用SecureCRT上传、下载文件(使用sz与rz命令) 借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器。 其中,对于sz和rz的理解与记忆我用了如下的方法(很多时候容易搞混): sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to ci转载 2013-07-23 17:02:44 · 923 阅读 · 0 评论 -
工作常用的linux命令
scp -r work@db-testing-ecom198.vm.baidu.com:/home/work/SoftWare/hadoop-client /home/work/libin/hadoop_prac/job/传目录用 scp -r 传文件用 scp原创 2013-07-25 11:17:50 · 734 阅读 · 0 评论 -
全局变量与全局静态变量的区别:
全局变量与全局静态变量的区别: (a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。 (b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。 (c)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用;静态全局变量的作用: (a)不必转载 2013-08-24 14:07:18 · 962 阅读 · 0 评论 -
memset ,memcpy 和strcpy 的根本区别?
Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’;例:char a[100];memset(a, '\0', sizeof(a)); memset可以方便的清空一个结构类型的变量或数组。如:struct sample_struct{ char csName[16]; int iSeq; int转载 2013-09-02 20:03:21 · 740 阅读 · 0 评论 -
open和fopen的区别:
1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度转载 2013-09-04 23:15:07 · 771 阅读 · 0 评论 -
linux常用命令
1. man 对你熟悉或不熟悉的命令提供帮助解释 eg:man ls 就可以查看ls相关的用法 注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。2. ls 查看目录或者文件的属*,列举出任一目录下面的文件 eg: ls /usr/man ls -l a.d表示目录(directory),如果是一个"-"表示是文件,如果是l则表示转载 2013-09-21 22:55:14 · 753 阅读 · 0 评论 -
malloc函数的一种简单的原理性实现[转]
malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针malloc()工作机制 malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的原创 2013-10-19 18:19:38 · 712 阅读 · 0 评论 -
[Linux] 进程间通信--管道 pipe 函数详解 (出自 360百科)
函数 pipe我们用中文叫做管道。 以下讲解均是基于Linux为环境:简介 所需头文件 #include 函数原型 int pipe(int fd[2]) 函数传入值 fd[2]:管道的两个文件描述符,之后就是可以直接操作这两个文件描述符 返回值 成功 0 失败 -1什么是管道 管道是Linux 支持的最初Unix I原创 2013-12-17 17:36:22 · 1217 阅读 · 0 评论 -
[Linux] 由管道父进程向子进程发送数据 (父子间IPC)
#include #include #include #include #include #include using std::cin;using std::cout;using std::endl;using std::string;typedef string String;const int MAXLINE = 1005;int main() { in原创 2013-12-17 17:38:39 · 1504 阅读 · 0 评论 -
shell中的${},##和%%的使用
假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt可以用${ }分别替换得到不同的值:${file#*/}:删掉第一个/ 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:删掉最后一个/ 及其左边的字符串:my.file.txt${file#*.}:删掉第一个. 及其左边的字符串:fil原创 2014-03-19 20:31:27 · 1185 阅读 · 0 评论 -
Linux_Notes teacher
读取一个包含一些文件名(包含全路径)的文件 all_files.txt - 对于在磁盘上面存在的文件,里面的 abc 替换成 def,替换结果保存在和文件相同路径下面,取名为 '文件名.当前日期.fix' (例如脚本执行的时候是 2014.2.14 那么文件名 file1 对应的文件修改后文件为 file1.2014_02_14.fix)。 - 对于在磁盘上面不存在的文件,把他的文件名(包原创 2014-03-19 20:30:19 · 1702 阅读 · 0 评论 -
c和c++中NULL和0的区别
1,什么是空指针常量(null pointer constant)?[6.3.2.3-3] An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.这里告诉我们:0、0L、'\0'、3 -转载 2013-09-09 13:15:21 · 883 阅读 · 0 评论 -
为什么 Vim 使用 HJKL 键作为方向键
导读:关于这个问题,以前网络上有一种说法,手指放在键盘上输入时,HJKL 比方向键距离手指更近,自然输入效率就更高。听起来似乎很有道理哦,其实则不然,来看看 Peteris Krumins 找到的答案吧。有一天我在看一些有关 Vim 的东东时,发现了它为什么用 HJKL 键作为方向键的原因了。当 Bill Joy 创建 Vi 文本编辑器时,他使用的机器机器是 ADM-3A 终端机,这机器就是把 H转载 2013-09-09 09:00:39 · 1976 阅读 · 0 评论 -
ptrace 人人小站 - http://zhan.renren.com/tag?value=ptrace
学了一周的ptrace,很多细节没有研究到。勉强交个自己打及格分的报告吧。希望高手轻喷~ Ptrace是linux提供的系统函数。具体可以在子进程处设置断点。当子进程到达断点时,暂停并通知父进程。此时,父进程可以看到子进程所有内存状态。并且可以直接获取或者修改寄存器等数据。甚至可以插入代码到子进程中。 网上有很多利用ptrace漏洞的。大概思路是说,可以调试超级转载 2013-09-08 18:42:50 · 1185 阅读 · 0 评论 -
wait4/ptrace/WIFSTOPPED/WIFSIGNALED
按理,当RE/OLE的时候child是会收到SIGSEGV/SIGFPE...等表示RE的信号,或者SIGXFSZ表示OLE的信号但是在wait4以后WIFSIGNALED(status)并没有得到正确的结果。Sempr大牛的版本是另做了一些处理:int sig = status >> 8; if(sig == 5);else{ switch(sig){转载 2013-09-08 20:35:55 · 1562 阅读 · 0 评论 -
调试器工作原理——基础篇
本文是一系列探究调试器工作原理的文章的第一篇。我还不确定这个系列需要包括多少篇文章以及它们所涵盖的主题,但我打算从基础知识开始说起。关于本文我打算在这篇文章中介绍关于Linux下的调试器实现的主要组成部分——ptrace系统调用。本文中出现的代码都在32位的Ubuntu系统上开发。请注意,这里出现的代码是同平台紧密相关的,但移植到别的平台上应该不会太难。动机要想理解转载 2013-09-08 16:58:57 · 796 阅读 · 0 评论 -
父进程等待子进程终止 wait, WIFEXITED, WEXITSTATUS
wait()的函数原型是:#include #include pid_t wait(int *status)进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出。如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现转载 2013-09-08 19:39:31 · 973 阅读 · 0 评论 -
struct stat 的用法
//! 需要包含de头文件#include #include int stat(const char *filename, struct stat *buf); //! prototype,原型 struct stat{ dev_t st_dev; /* ID of device containing file -文件所在设备的ID*/ ino_转载 2013-09-08 19:40:49 · 963 阅读 · 0 评论 -
Linux书架
工作几年来,一直从事Linux内核驱动方面的开发。从接触Linux到现在,读过不少Linux方面的书籍,现把认为很不错的一部分列出来和大家分享一下。入门类一直认为,在一个系统上学习开发之前,首先需要熟悉这个系统的使用。鉴于天朝的国情,绝大部分人第一个接触的操作系统就是Windows,因此对于这绝大部分人来说,如果要学习Linux开发,学会使用这个系统都是必不可少的一个环节。转载 2013-09-08 20:30:18 · 709 阅读 · 0 评论