linux
文章平均质量分 53
zuihoudebingwen
这个作者很懒,什么都没留下…
展开
-
system函数
system的作用是在shell终端执行command。简单的说就是在C中执行system("ls")这行代码的含义就相当于在shell执行ls一样。这么说还是比较笼统,下面详细描述之: system是个综合的操作,分解开来看就是相当于执行了1 fork 生成一个子进程。2 在子进程执行 execl("/bin/sh","sh","-c" command,(char*)转载 2013-03-06 15:21:56 · 544 阅读 · 0 评论 -
进程使用时间和内存的计算
ru_utime 和 ru_stime 成员变量包含了在用户模式和系统模式中执行时间的总和遥 其结构都为 timeval 结构遥ru_minflt 成员指不需要 I/O 的页缺失数遥 页缺失发生在内核需要得到一个内存页以供进程访问遥ru_majflt 值指需要 I/O 的页缺失数遥 页缺失发生在内核需要得到一个内存页以供进程访问时遥有时袁一个进程会被调出内存袁以提供空间给其原创 2013-06-17 21:37:21 · 1571 阅读 · 0 评论 -
ptrace(PTRACE_PEEKUSER,pid,ORIG_EAX*4,NULL)
所有的系统调用陷入内核的方式都是一样的,所以仅仅是陷入内核空间是不够的。因此必须把系统调用号一并传给内核。在x86上,这个传递动作是通过在触发软中断前把调用号装入eax寄存器实现的。这样系统调用处理程序一旦运行,就可以从eax中得到数据。上述所说的system_call()通过将给定的系统调用号与NR_syscalls做比较来检查其有效性。如果它大于或者等于NR_syscalls,该函数就返回-E原创 2013-06-17 21:39:29 · 2978 阅读 · 2 评论 -
ptrace跟踪子进程
引子:1.在Linux系统中,进程状态除了我们所熟知的TASK_RUNNING,TASK_INTERRUPTIBLE,TASK_STOPPED等,还有一个TASK_TRACED。这表明这个进程处于什么状态?2.strace可以方便的帮助我们记录进程所执行的系统调用,它是如何跟踪到进程执行的?3.gdb是我们调试程序的利器,可以设置断点,单步跟踪程序。它的实现原理又是什么?所有这原创 2013-06-17 18:21:00 · 4787 阅读 · 0 评论 -
系统调用
在Linux中,系统调用是用户空间访问内核的唯一手段,它们是内核唯一的合法入口。实际上,其他的像设备文件和/proc之类的方式,最终也还是要通过系统调用进行的。 一般情况下,应用程序通过应用编程接口(API)而不是直接通过系统调用来编程,而且这种编程接口实际上并不需要和内核提供的系统调用对应。一个API定义了一组应用程序使用的编程接口。它们可以实现成一个系统调用,也可以通过调用多个转载 2013-06-17 18:33:07 · 664 阅读 · 0 评论 -
ORIG_EAX
代码:00050: EBX = 0x0000051: ECX = 0x0400052: EDX = 0x0800053: ESI = 0x0C00054: EDI = 0x1000055: EBP = 0x1400056: EAX = 0x1800057: DS =原创 2013-06-17 21:27:19 · 3079 阅读 · 0 评论 -
php实现sed命令
//$retu = system("cat test | grep '\.$'| sed 's/\.$/\!/g'",$out);$retu = system("sed -i 's/^aaa/bbb/g' man");print_r($retu);//print_r($out);?>//把aaa开头的每行中把aaa替换为bbb原创 2013-08-22 14:27:49 · 1355 阅读 · 0 评论 -
Linux 信号说明
Linux 信号说明博客分类: IT技术 SIGHUP 终止进程 终端线路挂断SIGINT 终止进程 中断进程SIGQUIT 建立CORE文件终止进程,并且生成core文件SIGILL 建立CORE文件 非法指令SIGTRAP 建立CORE文件 跟踪自陷SIGBUS 建立转载 2013-08-25 19:53:25 · 620 阅读 · 0 评论 -
/proc/pid/status解释
/proc/9744$ cat statusName: gedit /*进程的程序名*/State: S (sleeping) /*进程的状态信息,具体参见http://blog.chinaunix.net/u2/73528/showart_1106510.html*/Tgid: 9744 /*线程组号*/Pid: 9744 /*进程pid*/PPid: 7672 /*转载 2013-09-05 19:54:54 · 920 阅读 · 0 评论 -
wait4函数
#包含“#“#的pid_t wait4(pid_t PID * 状态,INT 选项,结构什么用处* 什么用处);描述就像wait4函数一样()暂停当前进程的执行,直到一个孩子(PID)已经退出,或直到一个信号被发送,其行动是终止当前的进程或调用的信号处理功能。如果一个孩子(如要求通过PID)的通话时间(所谓的“僵尸”进程)已经退出,函数会立即返回。孩转载 2013-09-05 22:18:04 · 6802 阅读 · 2 评论 -
linux C语言 getpagesize获得页内存大小
使用getpagesize函数获得一页内存大小系统给我们提供真正的内存时,用页为单位提供,一次最少提供一页的真实内存空间 分配内存空间:你真实的分配了多少内存,就使用多少内存,不要越界使用 但是系统提供的真实内存空间是以页来提供的。#include int main(){ int x = 100; printf("&x=%p\n", &x); printf("pages转载 2013-09-05 20:28:00 · 7227 阅读 · 0 评论 -
unix树形目录结构
unix操作系统采用树形带沟连的目录结构,如下图所示,在这种结构中,一个文件的名字是由根目录到该文件的路径上所有节点名按顺序构成的,相互之间用“/”分开,如文件pong的全路径名为:/user/smith/pong,根目录用“/”表示。 根文件系统常用目录 根文件系统的常用目录举例如下表: unix树形目录结构 / 根目录,这是所有目录和文件转载 2013-09-19 14:20:49 · 6699 阅读 · 0 评论 -
ptrace系统调用
http://blog.csdn.net/Javadino/archive/2008/09/06/2891434.aspx 引子:1.在Linux系统中,进程状态除了我们所熟知的TASK_RUNNING,TASK_INTERRUPTIBLE,TASK_STOPPED等,还有一个TASK_TRACED。这表明这个进程处于什么状态?2.strace可以方便的帮助我们记录进程所执转载 2013-06-17 21:35:09 · 2208 阅读 · 0 评论 -
EAX
每次调用了API函数后,返回值都放在EAX中EAX 不单是用来返回值的,你如果不赶快把值取出来原来的值几乎瞬间就会被淹没。具体在 EAX 中存放什么视调用规范而定,通常不超过 32-bit 的值会放在 EAX 中返回。在32位程序中,32位以内的函数返回值都通过eax寄存器来传递,api函数规定默认是是用eax返回值,高级语言特性+编译器,通常将函数的返回值放在EAX中(单一返回值原创 2013-06-17 21:33:27 · 1000 阅读 · 0 评论 -
setjmp函数与goto语句
与刺激的abort()和exit()相比,goto语句看起来是处理异常的更可行方案。不幸的是,goto是本地的:它只能跳到所在函数内部的标号上,而不能将控制权转移到所在程序的任意地点(当然,除非你的所有代码都在main体中)。为了解决这个限制,C函数库提供了setjmp()和longjmp()函数,它们分别承担非局部标号和goto作用。头文件申明了这些函数及同时所需的jmp_buf数据类型原创 2013-06-17 11:18:38 · 857 阅读 · 0 评论 -
强制性锁建议性锁 .
fcntl有强大的功能,它能够复制一个现有的描述符,获得/设置文件描述符标记,获得/设置文件状态标记,获得/设置异步I/O所有权,获得/设置纪录锁。当多个用户共同使用,操作一个文件的情况,Linux通常采用的方法就是给文件上锁,来避免共享资源产生竞争的状态。fcntl文件锁有两种类型:建议性锁和强制性锁建议性锁是这样规定的:每个使用上锁文件的进程都要检查是否有锁存在,当然还得尊重已转载 2013-03-07 19:17:14 · 608 阅读 · 0 评论 -
WIFEXITED WIFSTOPPED WIFSIGNALED用法
waitpid()介绍】waitpid主要用于根据进程ID号等待指定的子进程。函数形式如下:******************************************************pid_t waitpid(pid_t pid, int* status,int options);**************************************************转载 2013-03-09 14:55:08 · 2188 阅读 · 0 评论 -
wait4的使用
wait4会挂起当前进程,等待指定的子进程状态改变,并且会返回关于子进程使用资源的信息。所谓的状态的改变包括终止,挂起所有的进程状态的改变。其次,在linux中进程终止后不会释放其资源,它会进入一种僵死的状态,内核会为僵死态的进程保留最少的信息(进程标识,终止状态和资源使用信息).而wait4就可以释放与子进程关联的资源。如果父进程不执行wait,而父进程又死亡后,僵死态的子进程会被指定成系统转载 2013-03-09 14:56:13 · 1146 阅读 · 0 评论 -
ps命令详解
原文地址:http://apps.hi.baidu.com/share/detail/32573968有时候系统管理员可能只关心现在系统中运行着哪些程序,而不想知道有哪些进程在运行。由于一个应用程序可能需要启动多个进程。所以在同等情况下,进程的数 量要比程序多的多。为此从阅读方面考虑,管理员需要知道系统中运行的具体程序。要实现这个需求的话,就需要利用命令ps来帮忙。要对进程进行监测和控制,转载 2013-02-28 14:53:52 · 447 阅读 · 0 评论 -
mysql在redhat下的安装
mysql在redhat下的安装??Linux+Apache+Mysql+PHP典型配置 调试环境:Redhat9.0 Apache1.3.29 Mysql3.23.58 PHP4.3.4 Linux系统的安装我就不讲了,其实这篇文章在类似Redhat的其他linux也应该通用,大家只要掌握我提供的方法就行。记得安装Redhat9。0的时候不要安装系统默认的a转载 2013-03-01 14:11:46 · 423 阅读 · 0 评论 -
关于virtualbox安装增强功能包的总结
关于virtualbox安装增强功能包的总结 2009-11-24 22:16:44| 分类: 默认分类|字号 订阅首先进入系统点击设备---安装增强功能(一).为Solaris1. 打开OpenSolaris 终端, 转换用户名为超级用户 (命令行:su root)(如果没有管理员权限的时候才用)2. pkgadd -d VBoxS转载 2013-06-12 13:11:04 · 1844 阅读 · 0 评论 -
ubuntu如何在线升级
sudo apt-get updatesudo apt-get upgrade是这两个命令原创 2013-06-12 18:00:03 · 1705 阅读 · 0 评论 -
Centos 下安装gcc和g++
1 打开VMWare界面,选择菜单VM--Settings,在对话框中选择CDROM,设置参数为Use ISO image,选择CentOS镜像安装文件;2 启动虚拟机中的CentOS系统,用root登录,在桌面上用鼠标右键新建一终端窗口;3 在终端中输入 cd /media/CentOS_5.5_Final/CentOS 回车gcc:4.接下来安装转载 2013-06-13 14:55:01 · 1402 阅读 · 0 评论 -
linux下的g++编译器安装
再debian下直接apt-get install gcc g++就可以了。按照类似的逻辑,再Fedora下yum install gcc g++ 报告无法找到g++包。查了一下,原来这个包的名字叫做gcc-c++。完整的应该是yum install gcc gcc-c++。注意安装时要先成为root用户。具体的在终端输入su之后会提示输入管理员密码,输入之后在终端输入命令行yum转载 2013-06-13 14:22:36 · 600 阅读 · 0 评论 -
linux下c编程笔记
1、system()函数相关函数:fork,execve,waipid,popen表头文件:#include函数定义:int system(const char *string)返回值:如果fork()失败 返回-1:出现错误如果exec()失败,表示不能执行Shell,返回值相当于Shell执行了exit(127)如果执行成功则返回子Shell的终止状态转载 2013-06-17 09:49:06 · 547 阅读 · 0 评论 -
进程资源信息 struct rusage
进程资源信息 struct rusageinclude 利用getrusage可以得到进程的相关资源信息。如:用户开销时间,系统开销时间,接收的信号量等等;下面是rusage的结构:struct rusage {struct timeval ru_utime; /* user time used */struct timeval ru_stime; /* syste原创 2013-06-17 10:03:47 · 2718 阅读 · 0 评论 -
struct timeval结构体 以及 gettimeofday()函数
一、struct timeval结构体struct timeval结构体在time.h中的定义为:struct timeval{__time_t tv_sec; /* Seconds. */__suseconds_t tv_usec; /* Microseconds. */};其中,tv_sec为Epoch到创建s原创 2013-06-17 10:07:04 · 699 阅读 · 0 评论 -
Linux 内存的延迟分配
Linux 内存的延迟分配 Linux内存的延迟分配就是在你未使用内存(均值物理内存)的时候,操作系统是不会真正的分配物理内存的,比如 int *p = (int*)malloc(1024 * 1024) 如果接下来你没有访问p所指向的内存,那么你会看到进程占用的内存是不是包括这1M空间的。上面这句话是对的,但是还不够清楚,接下来的问题是,如果我开始使用内存,则会占转载 2013-09-19 14:23:46 · 2204 阅读 · 0 评论