fork

#include <unistd.h>
#include
<stdio.h>
#include
<stdlib.h>
int a;/*未初始化全局变量默认0.*/
int main(void)
{
pid_t pid;
/*标记父进程的pid区别子进程。
系统资源不够可能fork失败
fork(); 写时复制,只读共享。
*/
pid
= fork();
/*此处父进程pid返回子进程pid>0;子进程pid返回=0;*/
if (pid == -1) {
perror(
"fork");
exit(
1);
}
/*父进程执行pid>0*/
if (pid > 0) {
a
= 9;
/*pid>0 父进程才执行这里
成功创建后父进程先返回,之后子进程返回.
所以打印两次
*/
printf(
"I am father My pid = %d, My childd = %d, a = %d\n",
getpid(), pid, a);
}
else if (pid == 0) {
printf(
"I am child, My pid = %d, My ppid = %d, a = %d\n",
getpid(), getppid(), a);
}
sleep(
1);
/*不休眠子进程的pid显示1? 如果不休眠父进程提前退出,
子进成为孤儿进程由1号(init)进程管理。
所以子进程pid=1;
*/
return 0;
}
/*父进程返回值为子进程pid>0,子进程返回pid=0,pid<0失败.*/
posted @ 2011-09-17 08:41  aiplus  阅读(288)  评论(0)    收藏  举报
悬浮按钮示例