int status;pid_t t = fork();if(t){waitpid(t, &status, 0);}else{system("vi temp.txt");exit(0);}//父进程和子进程均执行完毕后继续执行下去分析过程:if和else还是选择分支。主要的原因是,fork()函数调...
分类:
系统相关 时间:
2015-01-24 11:27:03
阅读次数:
170
作者:lxmuyu链接:wait、waitpidwait1.1 简介wait函数所需头文件:#include #include wait函数原型:pid_t wait(int *status);进程一旦调用了 wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到...
分类:
其他好文 时间:
2015-01-14 00:40:23
阅读次数:
155
1、system(执行shell命令)相关函数 fork,execve,waitpid,popen表头文件 #include定义函数 int system(const char * string);函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-cstring来...
分类:
系统相关 时间:
2015-01-05 10:48:38
阅读次数:
239
system函数
system函数用方便在一个进程中执行命令行(一行shell命令)。
用法如下:
#include
#include
int main()
{
printf("Hello\n");
system("sleep 5");
return 0;
}
在程序中通过system调用了命令行 sleep 5。(这里知识举一个例子,当然可以执行一个类似“ b...
分类:
其他好文 时间:
2014-12-25 11:25:43
阅读次数:
199
fork函数:
#include
pid_t fork(void);
fork用来创建一个子进程;
特点:fork调用后会返回两次,子进程返回0,父进程返回子进程的进程ID;fork返回后,子进程和父进程都从fork函数的下一条语句开始执行;...
分类:
系统相关 时间:
2014-12-23 10:31:34
阅读次数:
262
先抄录网上一段对僵死进程的描述:
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。 但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termi...
分类:
系统相关 时间:
2014-12-17 14:36:59
阅读次数:
355
#define __USE_LARGEFILE64
#define _LARGEFILE64_SOURCE
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2014-12-16 17:09:48
阅读次数:
245
1.什么是僵尸进程
如果父进程在子进程之前终止,则所有的子进程的父进程都会改变为init进程,我们称这些进程由init进程领养。这时使用ps命令查看后可以看到子进程的父进程ppid已经变为了1。
而当子进程在父进程之前终止时,内核为每个终止子进程保存了一定量的信息,所以当终止进程的父进程调用wait或waitpid时,可以得到这些信息。这些信息至少包括进...
分类:
系统相关 时间:
2014-12-16 17:04:39
阅读次数:
233
服务端多进程避免僵尸进程的方法1)通过忽略SIGCHLD信号,解决僵尸进程 在server端代码中添加signal(SIGCHLD, SIG_IGN);2)通过wait/waitpid方法,解决僵尸进程 signal(SIGCHLD,onSignalCatch);
void onSignalCatch(int signalNumber)
{
wait(NULL);...
分类:
其他好文 时间:
2014-12-05 17:37:02
阅读次数:
251