转自:gdb调试多进程和多线程命令1.
默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可...
分类:
数据库 时间:
2014-05-23 23:01:03
阅读次数:
470
程序A创建子进程,并调用进程B,根据不调用的不同情况,最后显示结果不同。#include
#include #include #include #include int main() { pid_t pid, rpid; int stat; if
((pid = fork()) i...
分类:
系统相关 时间:
2014-05-23 12:35:12
阅读次数:
1758
linux下实现多线程有两种函数调用:一种是通过pthread.h里面已经封装好的函数调用,另一种是通过unistd.h里面的fork函数调用。前面已经已经列举了pthread的使用,下面来书fork的例子。
一.fork函数
简单的fork例子
#include
#include
#include
using namespace std;
int main()
{...
分类:
编程语言 时间:
2014-05-23 07:59:41
阅读次数:
395
曾几何时,只是一直在调用库函数fork,只知道它创建一个子进程,并且子进程返回值是0,父进程返回值是子进程pid。但是一直没有深究内核代码,今天终于使用gdb调试了一把fork的内核代码,下面就让我们一探究竟吧。
1.创建进程的本质是什么?
根据目前理解,其实就是构造了PCB,这个PCB会唯一标示一个进程的存在,并且会构建子进程的页目录和页表等等。
2.为什么fork()调用会有2个返回值,...
分类:
系统相关 时间:
2014-05-22 10:40:01
阅读次数:
404
CGI
CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。
FastCGI
FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布...
分类:
Web程序 时间:
2014-05-22 09:31:44
阅读次数:
340
线程是一种使程序在同一时间做多件事的机制,和进程一样是并发执行的。linux内核调度为每个线程分配一个时间片,使用完后等待下次调度。和进程相比,线程是一种更小的执行单位。
每个进程启动后都会有一个线程在运行,称为主线程,可以在主线程中启动多个子线程,这些线程在同一个进程中,不同线程在给定时间内执行不同的代码片段。
我们可以fork一个子进程,这个子进程就是对父进...
分类:
编程语言 时间:
2014-05-18 04:58:16
阅读次数:
307
1) 迭代性服务器 迭代性服务器,在开源社区的代表之作是Apache
Web服务器。该模型中,存在唯一的侦听进程,侦听进程accept新的链接之后,通过fork的方式,派生出一个新的进程来为这个请求进行专门的服务,直至请求全部处理完成,被fork的进程也会自动退出,在服务过程中被占用的各种资源得以释...
分类:
其他好文 时间:
2014-05-16 00:55:36
阅读次数:
313
转载自:http://www.cnblogs.com/york-hust/archive/2012/11/23/2784534.html一、fork入门知识
一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全...
分类:
系统相关 时间:
2014-05-15 22:05:30
阅读次数:
455
管道,一种古老的进程间通信形式。一个管道由一个进程创建,然后该进程调用fork,此后父、子进程就可以用管道通信了。
函数原型:
#include
int pipe(int filedes[2]); // 成功返回0,出错返回-1
参数filedes返回两个文件描述符。filedes[0]用来输入,filedes[1]用来输出。注意,经过实验,这里的两个描述符并不对应标...
分类:
系统相关 时间:
2014-05-15 19:39:53
阅读次数:
506
在VI下编译运行C++
vi 1.cpp (创建cpp文件名)
i (进入insert模式开始编辑)
输入完成代码后按Esc 键 退出
然后按 Shift +:输入wq (保存并退出)
g++ 1.cpp -o 1 (编译1.cpp文件,编译后的可运行文件名为1)
./1 运行结果
系统调用
fork() 系统每调用一次会产生一个...
分类:
系统相关 时间:
2014-05-15 06:17:03
阅读次数:
415