fork()函数用于产生一个子进程,和当前的进程并行执行。通过判断fork函数的返回值可以区分是父进程还是子进程,如果返回为0,则为子进程。
对于fork函数的执行方式,自己还是存在一些不明,写了一个简单的测试程序测试fork函数的一些性质。...
分类:
其他好文 时间:
2015-02-23 17:55:31
阅读次数:
140
0、FILE *popen(const char *command, const char *type);popen 函数相当于做了以下几件事:1、创建一个无名管道文件2、 fork()3、在子进程里, exec command4、 在子进程里,若 type == “r” , 相当于进行:int f...
分类:
系统相关 时间:
2015-02-21 22:16:04
阅读次数:
312
实践1:信号量实现进程互斥父子进程执行流程如下:父进程子进程PPO(print)X(print)sleepsleepO(print)X(print)VVsleepsleep从图中可以看出, O或X总是成对出现的, 要么两个O, 要么两个X;/**P,V原语实现父子进程互斥使用终端**/
// 程序代码
int main(int argc,char *argv[])
{
int semid...
分类:
系统相关 时间:
2015-02-19 16:20:24
阅读次数:
262
管道概念 管道是Unix中最古老的进程间通信的形式,我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”, 管道的本质是固定大小的内核缓冲区; 如:ps aux | grep httpd | awk '{print $2}' 管道限制 1)管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 2)匿名管道只能用于具有共同祖先的进程(如父进程与fork...
分类:
系统相关 时间:
2015-02-18 17:41:21
阅读次数:
365
孤儿进程与僵尸进程孤儿进程: 如果父进程先退出,子进程还没退出那么子进程的父进程将变为init进程。(注:任何一个进程都必须有父进程)//生成孤儿进程
int main(int argc, char *argv[])
{
pid_t pid = fork();
if (pid < 0)
err_exit("fork error");
else if (p...
分类:
系统相关 时间:
2015-02-18 11:55:40
阅读次数:
260
Wait的背景 当子进程退出的时候,内核会向父进程发送SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止) 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态。 父进程查询子进程的退出状态可以用wait/waitpid函数#include
#include
pid_t wait...
分类:
系统相关 时间:
2015-02-18 11:53:47
阅读次数:
193
概述 守护进程是在需要在后台长期运行不受终端控制的进程,通常情况下守护进程在系统启动时自动运行,在服务器关闭的时候自动关闭;守护进程的名称通常以d结尾,比如sshd、xinetd、crond、atd等。守护进程编程规则 调用umask将文件模式创建屏蔽字设置为一个已知值(通常是0) 调用fork(),创建新进程,它会是将来的守护进程 然后使父进程exit,保证子进程不是进程组组长...
分类:
系统相关 时间:
2015-02-18 11:53:36
阅读次数:
237
进程 VS. 程序什么是程序? 程序是完成特定任务的一系列指令集合。什么是进程? [1]从用户的角度来看:进程是程序的一次执行过程 [2]从操作系统的核心来看:进程是操作系统分配的内存、CPU时间片等资源的基本单位。 [3]进程是资源分配的最小单位 [4]每一个进程都有自己独立的地址空间与执行状态。 [5]像UNIX这样的多任务操作系统能够让许多程序同时运行,每一个运行着的程序就构...
分类:
系统相关 时间:
2015-02-18 10:42:08
阅读次数:
305
本文目的这几天开发了一个PHP CLI程序,用于后台定时调度执行一些任务。此脚本采用了PHP的多进程(pcntl_fork),共享内存和信号量进行IPC和同步。目的是将串行的任 务并行执行,缩短执行时间。可是在工作子进程中,访问myql时一直报错,通过mysql_error返回的信息却是冷冷的一句话...
分类:
数据库 时间:
2015-02-16 18:08:27
阅读次数:
161
最近有一个需求,需要用一个java进程启动多个子进程来完成并发任务。由于必须给用户完成任务的反馈,所以需要父进程记录子进程的生命周期。exec方法返回一个Process对象,在当前进程内调用该对象的waitFor方法,然后父进程就会在该方法阻塞,那么只有在该Process结束的情况下,才会从wait...
分类:
编程语言 时间:
2015-02-13 01:33:00
阅读次数:
390