int status; pid_t t = fork(); if(t){     waitpid(t, &status, 0); }else{     system("vi temp.txt");     exit(0); } //父进程和子进程均执行完毕后继续执行下去   分析过程: if 和 else 还是选择分支. 主要的原因是,fork() 函数调用一次,返回两次.两次返回的区别是:子进程的返回值是0,父进程返回值为新子进程的进程ID.返回后,父进程执行waitpid(…
我们一直在强调一个概念就是进程是一个程序执行的实例,是内核在虚拟概念下创建的实体,它实例化的体现在用户态就是程序代码和代码使用的变量(存储空间),在内核态就是内核为我们每个进程所保存的数据结构(状态信息)等. 当一个进程由于某种原因停止时,内核并不是直接将为它保存的状态信息从内核移除,相反,进程会一直被保持在一种已经终止的状态,直到被它的父进程回收,当父进程回收已经终止的子进程时,内核会将子进程的退出状态传递给父进程,然后抛弃已经终止的进程,从此刻开始,这个进程才会消失,一个子进程结束但是还没有…
#include <sys/types.h>#include<sys/wait.h>#include<unistd.h>#include<stdio.h>#include<stdlib.h> int main(){  pid_t pid;                                  //记录fork()的返回值,用于区别父子进程  char *Message;                              //用…
Linux下利用Ret2Libc绕过DEP ⑴.  原理分析: 系统库函数通常是不受DEP(关于DEP,可以查看我之前文章的详细介绍)保护的,所以通过将返回地址指向系统函数可以绕过DEP保护,所以可以通过调研系统函数system()获得shell. ⑵.环境准备: i.漏洞代码: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> void flow()…
GDB的那些奇淫技巧 evilpan 收录于 Security  2020-09-13  约 5433 字   预计阅读 11 分钟  709 次阅读  gdb也用了好几年了,虽然称不上骨灰级玩家,但也有一些自己的经验,因此分享出来给大家,顺便也作为一个存档记录. 多进程调试 最近在调试一个漏洞的exploit时遇到一个问题.目标漏洞程序是一个 CGI 程序,由主进程调起,而且运行只有一瞬的时间:我的需求是想要在在该程序中下断点,在内存布局之后可以调试我的 shellcode,该如何实现?当然目…
linux下利用elk+redis 搭建日志分析平台教程 http://www.alliedjeep.com/18084.htm   elk 日志分析+redis数据库可以创建一个不错的日志分析平台了,下面我们来看一篇在linux下利用elk+redis 搭建日志分析平台教程,希望例子对各位有帮助. 这个是最新的elk+redis搭建日志分析平台,今年时间是2015年9月11日. Elk分别为 elasticsearch,logstash, kibana 官网为:https://www.elas…
原文地址:http://www.cnblogs.com/firtree/p/4028354.html linux下利用openssl来实现证书的颁发(详细步骤) 1.首先需要安装openssl,一个开源的实现加解密和证书的专业系统.在centos下可以利用yum安装. 2.openssl的配置文件是openssl.cnf,我们一般就是用默认配置就可以.如果证书有特殊要求的话,可以修改配置适应需求.这样必须把相关的文件放到配置文件指定的目录下面. 3.首先需要利用openssl生成根证书,以后的服…
Linux 运行jar包命令如下: 方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 java -jar XXX.jar & &代表在后台运行. 特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行. 继续改进,如何让窗口关闭时,程序仍然运行? 方式三 nohup java -jar XXX.jar & nohup 意思是不挂断运行命令,当账户退出或终端关闭时,…
嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误 2015-05-27 14:19 184人阅读 评论(0) 收藏 举报  分类: 嵌入式(928)  一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的. 在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈. int backtrace(voi…
Linux下useradd命令创建的用户不能登录的问题  问题: 用useradd命令新创建一个用户tester 密码pwdtest mkdir -p /home/tester(创建文件夹) useradd -p pwdtest -d /home/tester tester(创建用户tester和密码pwdtester) 或者 添加用户:useradd -m 用户名 然后设置密码 passwd 用户名(回车设置密码) 删除用户:userdel -r 用户名 执行完后,用tester用户名登录发现…
Linux下利用script命令录制并回放终端会话 核心命令 script 和 scriptreplay 录制屏幕 script -t 2>timescript typescript 命令解释: 选项 -a 把录制内容追加的输出文件 -t 保存录制时间节点 -q 不显示script启动和exit的命令 -f 每次操作后都立即刷新缓存.实时写入文件 时间节点是输出到 stderr 的,所以要使用 2> 重定向 回放 scriptreplay -t timescript -s typescript…
linux下利用nginx实现负载均衡 前提条件: 1,安装好jdk 2,安装好tomcat和nginx(可以参考我前两篇文章) 满足前提条件后,要用nginx实现负载均衡,主要是靠配置nginx的配置文件. 我们要实现的架构图如下: 1.分别部署3个tomcat,端口分别为8080,8081,8082 drwxr-xr-x 9 root root 4096 Mar 11 13:41 tomcat8-8080drwxr-xr-x 9 root root 4096 Mar 11 17:27 tom…
最近一直在研究Linux下利用GPU进行硬件加速转码的方案,折腾了很久,至今没有找到比较理想的硬加速转码方案.似乎网上讨论这一方案的文章也特别少,这个过程中也进行了各种尝试,遇到很多具体问题,以下便对之前所作的一些工作做一些总结和分享,省的时间长了自己也忘记了,也希望后来者能少走弯路,并找到适合自己的最佳方案. 背景: 项目需要在指定的linux服务器上对视频源进行转码存储,以节省存储空间.操作系统必须是Linux,用来硬加速转码的GPU是nViDIA的GT440. 方案1: 由于nViDIA的…
本节目标: 僵进程 SIGCHLD wait waitpid 一,僵尸进程 当一个子进程先于父进程结束运行时,它与其父进程之间的关联还会保持到父进程也正常地结束运行,或者父进程调用了wait才告终止. 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态. 进程表中代表子进程的数据项是不会立刻释放的,虽然不再活跃了,可子进程还停留在系统里,因为它的退出码还需要保存起来以备父进程中后续的wait调用使用.它将称为一个"僵进程&…
僵尸进程 当一个子进程先于父进程结束运行时,它与其父进程之间的关联还会保持到父进程也正常地结束运行,或者父进程调用了wait才告终止. 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态. 进程表中代表子进程的数据项是不会立刻释放的,虽然不再活跃了,可子进程还停留在系统里,因为它的退出码还需要保存起来以备父进程中后续的wait调用使用.它将称为一个“僵进程”. 如何避免僵尸进程 调用wait或者waitpid函数查询子进程…
一.摘要 详解父进程.子进程.守护进程的区别,例子稍候补充 二.定义区别 主进程 程序执行的入口,可以理解为常用的main 函数 父进程 对于子进程而言, 子进程的创造者,可有多个子进程. 任何进程都有父进程,追根溯源是系统启动程序.对于我们一般写的程序,主进程是最初始的父进程. 子进程 对于父进程而言, 父进程创建的进程, 子进程只能对应一个父进程. 守护进程 我们常言的daemon 进程,是子进程的一种状态,标记子进程与父进程同死.如果没有标记daemon , 则杀死父进程,与子进程的运行状…
进程 什么是进程?进程是一个运行中的程序实体,拥有独立的堆栈.内存空间和逻辑控制流. 这是标准的进程概念.让我们通过操作系统的fork函数看看这个抽象的概念是怎么在进程的实现中体现出来的. 构成要素 创建一个进程,需要进程体.进程表和数据空间. 进程体在C代码中对应一个函数,编译成二进制代码后就是一组指令. 进程表用来记录进程的进程ID.进程名称.寄存器快照空间.简单说,当中断发生时,会保存此刻CPU的状态,然后记录到进程表中. 进程表的作用就是用来存储进程快照. 进程堆栈的作用是什么?存储进程…
有时候因为一些情况,需要把 linux 下符合某一项条件的所有进程 kill 掉,又不能用 killall 直接杀掉某一进程名称包含的所有运行中进程(我们可能只需要杀掉其中的某一类或运行指定参数命令的进程),这个时候我们需要运用 ps, grep, cut 和 kill 一起操作. ok,下面给出具体的参考: ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9 运行这条命令将会杀掉所有含有关键字"LOCAL=NO"的进…
Linux下Tomcat的启动.关闭.杀死进程 打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina.out #看tomcat的控制台输出: #看是否已经有tomcat在运行了 ps -ef |grep tomcat #如果有,用kill; kill -9 pid #pid 为相应的进程号 例如 pe -ef |grep tomcat 输出如下 sun 5…
pcntl_fork创建子进程成功的话,系统就有了2个进程,一个为父进程,一个为子进程,父进程和子进程都继续向下执行,子进程的id号为$pid(父进程会获取子进程的$pid也就是$pid不为0,而子进程会获取$pid为0)在系统运行到$pid = pcntl_fork();时,在这个地方进行分支,父子进程各自开始运行各自的程序代码(通过if else语句判断$pid我们就可以在指定位置写上不同的逻辑代码). 代码的运行结果是parent 和child,很奇怪吧,为什么一个if和else互斥的代码…
wait() 和 waitpid() wait() 系统调用挂起调用进程的执行直到有一个孩子终止.调用 wait(&status) 等价于: waitpid(-1, &status, 0); waitpid() 系统调用挂起调用进程的执行直到由参数 pid 指定的孩子的状态发生改变.默认情况下,waitpid() 只等待孩子的终止,但是这个行为可能通过 options 参数来改变,具体描述如下. pid 值可以是: < -1 表示等待 进程组ID 为 pid 绝对值的进程组内的所有孩…
<?php /** 这是一个swoole父进程和子进程之间通信的例子 */ //进程创建成功后回调处理 function handle(swoole_process $worker){ //从进程管道中读取数据 $data = $worker->read(); echo PHP_EOL."from master: {$data}"; //向进程管道中写入数据 $pipe = $worker->pipe;//子进程的管道编号 $pid = $worker->pid…
创建如图的进程: #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<wait.h> int main() { int pid=fork();//创建子进程 ) { printf(;//子进程结束 } int pid2=fork();//创建子进程 ) { printf();;//子进程结束 } int pid3=fork(); )//创建子进程 { printf(;//子进程结束…
在日常运维工作中,公司不同人员(一般是运维人员)共用root账号登录linux服务器进行维护管理,在不健全的账户权限审计制度下,一旦出现问题,就很难找出源头,甚是麻烦!在此,介绍下利用编译bash使不同人员在使用root账号登陆服务器后,能记录各自的操作,并且可以结合ELK日志分析系统收集登陆操作日志. 废话不多说!下面分享下操作记录: 服务器ip:192.168.1.180 首先是编译bash[root@dev ~]# cd /usr/local/src/[root@dev src]# wge…
原帖地址: http://blog.csdn.net/jjzhoujun2010 http://blog.csdn.net/yf210yf/article/details/6700391 http://www.cnblogs.com/lixiaoming90/archive/2013/03/21/2973837.html 1.开发环境: 开发板是 OK6410 PC操作系统 Ubuntu 14.04 USB 转串口线 2.安装配置minicom: 2.1 下载安装minicom sudo apt…
linux下的ioctl函数原型如下: #include <sys/ioctl.h> int ioctl(int handle, int cmd, [int *argc, int argv]) 函数成功返回0,失败返回-1. 其相关命令接口如下: 类别 Request 说明 数据类型 套 接 口 SIOCATMARK SIOCSPGRP SIOCGPGRP 是否位于带外标记 设置套接口的进程ID 或进程组ID 获取套接口的进程ID 或进程组ID int int int 文 件 FIONBIO…
以前创建文件我一般用dd来创建,例如创建一个512M的文件: dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero中读取,/dev/zero为0源) 但是这样为实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢 在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘 则可以 dd if=/dev/zer…
在linux下安装mysql请参考在linux系统中安装mysql服务器详细步骤 1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,'jeecn’,password(‘jeecn’)); //刷新系统权限表 mysql>flush privileges; 这样就创建了一个名为:jeecn  密码为:j…
在 RAID 5 中,数据条带化后存储在分布式奇偶校验的多个磁盘上.分布式奇偶校验的条带化意味着它将奇偶校验信息和条带化数据分布在多个磁盘上,这样会有很好的数据冗余. 在 Linux 中配置 RAID 5 对于此 RAID 级别它至少应该有三个或更多个磁盘.RAID 5 通常被用于大规模生产环境中,以花费更多的成本来提供更好的数据冗余性能. 什么是奇偶校验? 奇偶校验是在数据存储中检测错误最简单的常见方式.奇偶校验信息存储在每个磁盘中,比如说,我们有4个磁盘,其中相当于一个磁盘大小的空间被分割去…
转自:http://www.cnblogs.com/Rapheal/p/3610411.html?utm_source=tuicool&utm_medium=referral 最近在折腾linux,我们平常往linux下安装的软件都只能在解包的文件夹里打开,怎样才能像Windows那样在桌面创建图标呢? 下面以我安装的eclipse为例子: 首先,我们打开终端............. vim /usr/share/applications/eclipse.desktop 以下是内容: [Des…