3
3
Linux
Linux
应
应
用
用
编
编
程
程
3.1
3.1
linux
linux
进
进
程
程
控
控
制
制
一
一
个
个
进
进
程
程
是
是
一
一
个
个
正
正
在
在
执
执
行
行
的
的
程
程
序
序
的
的
实
实
例
例
,
,
也
也
是
是
Linux
Linux
基
基
本
本
的
的
调
调
度
度
单
单
位
位
正
正
在
在
运
运
行
行
的
的
程
程
序
序
的
的
一
一
个
个
进
进
程
程
由
由
如
如
下
下
元
元
素
素
组
组
成
成
1)
1)
程
程
序
序
的
的
当
当
前
前
上
上
下
下
文
文
(context),
(context),
它
它
是
是
程
程
序
序
当
当
前
前
执
执
行
行
的
的
状
状
态
态
2)
2)
程
程
序
序
的
的
当
当
前
前
执
执
行
行
目
目
录
录
3)
3)
程
程
序
序
访
访
问
问
的
的
文
文
件
件
和
和
目
目
录
录
4)
4)
程
程
序
序
的
的
信
信
任
任
状
状
态
态
(credentials)
(credentials)
或
或
说
说
访
访
问
问
权
权
限
限
,
,
比
比
如
如
它
它
的
的
文
文
件
件
模
模
式
式
和
和
所
所
有
有
权
权
5)
5)
内
内
存
存
和
和
其
其
他
他
分
分
配
配
给
给
进
进
程
程
的
的
系
系
统
统
资
资
源
源
轻
轻
量
量
级
级
进
进
程
程
,
,
也
也
称
称
为
为
线
线
程
程
,
,
提
提
供
供
了
了
独
独
立
立
的
的
执
执
行
行
线
线
索
索
和
和
堆
堆
栈
栈
段
段
,
,
但
但
却
却
共
共
享
享
数
数
据
据
段
段
,
,
Linux
Linux
特
特
有
有
的
的
_clone
_clone
调
调
用
用
用
用
于
于
支
支
持
持
线
线
程
程
,
,
它
它
通
通
过
过
指
指
定
定
共
共
享
享
的
的
属
属
性
性
带
带
来
来
了
了
更
更
好
好
的
的
灵
灵
活
活
性
性
进
进
程
程
标
标
识
识
号
号
1)
1)
进
进
程
程
的
的
最
最
知
知
名
名
的
的
属
属
性
性
就
就
是
是
它
它
的
的
进
进
程
程
号
号
(
(
prosess
prosess
ID, PID)
ID, PID)
和
和
它
它
的
的
父
父
进
进
程
程
号
号
(parent
(parent
process ID, PPID).
process ID, PPID).
2)
2)
进
进
程
程
号
号
是
是
非
非
零
零
正
正
整
整
数
数
3)
3)
所
所
有
有
进
进
程
程
追
追
溯
溯
其
其
祖
祖
先
先
最
最
终
终
都
都
会
会
落
落
到
到
进
进
程
程
号
号
为
为
1
1
的
的
进
进
程
程
身
身
上
上
,
,
这
这
个
个
进
进
程
程
叫
叫
做
做
init
init
进
进
程
程
。
。
init
init
进
进
程
程
是
是
内
内
核
核
自
自
举
举
后
后
第
第
一
一
个
个
启
启
动
动
的
的
进
进
程
程
。
。
init
init
引
引
导
导
系
系
统
统
、
、
启
启
动
动
守
守
护
护
进
进
程
程
并
并
且
且
运
运
行
行
必
必
要
要
的
的
程
程
序
序
。
。
init
init
是
是
所
所
有
有
进
进
程
程
的
的
父
父
进
进
程
程
PID
PID
的
的
常
常
见
见
用
用
法
法
1)
1)
创
创
建
建
惟
惟
一
一
的
的
文
文
件
件
名
名
或
或
目
目
录
录
。
。
例
例
如
如
,
,
当
当
调
调
用
用
getpid
getpid
后
后
,
,
进
进
程
程
接
接
着
着
要
要
用
用
PID
PID
创
创
建
建
一
一
个
个
临
临
时
时
文
文
件
件
。
。
2)
2)
把
把
PID
PID
写
写
入
入
日
日
志
志
文
文
件
件
作
作
为
为
日
日
志
志
消
消
息
息
的
的
一
一
部
部
分
分
,
,
以
以
清
清
楚
楚
说
说
明
明
是
是
哪
哪
个
个
进
进
程
程
记
记
录
录
下
下
的
的
日
日
志
志
消
消
息
息
3)
3)
可
可
以
以
用
用
它
它
的
的
PPID
PPID
向
向
它
它
的
的
父
父
进
进
程
程
发
发
送
送
信
信
号
号
或
或
其
其
他
他
信
信
息
息
#include <
#include <
stdio.h
stdio.h
>
>
#include <
#include <
unistd.h
unistd.h
>
>
#include <
#include <
stdlib.h
stdlib.h
>
>
int
int
main(void
main(void
)
)
{
{
printf("PID
printf("PID
= %d \n",
= %d \n",
getpid
getpid
());
());
printf("PPID
printf("PPID
= %d \n",
= %d \n",
getppid
getppid
());
());
exit(EXIT_SUCCESS
exit(EXIT_SUCCESS
);
);
}
}
创
创
建
建
子
子
进
进
程
程
:
:
int
int
fork()
fork()
返
返
回
回
值
值
:
:
-1
-1
:
:
创
创
建
建
子
子
进
进
程
程
失
失
败
败
0
0
:
:
子
子
进
进
程
程
得
得
到
到
的
的
返
返
回
回
值
值
>0
>0
:
:
父
父
进
进
程
程
得
得
到
到
的
的
返
返
回
回
值
值
,
,
表
表
示
示
子
子
进
进
程
程
号
号
(
(
pid
pid
)
)
创
创
建
建
子
子
进
进
程
程
后
后
,
,
父
父
、
、
子
子
进
进
程
程
执
执
行
行
同
同
一
一
个
个
程
程
序
序
,
,
子
子
进
进
程
程
继
继
承
承
父
父
进
进
程
程
的
的
资
资
源
源
。
。
Main()
Main()
{
{
int
int
i;
i;
i=fork();
i=fork();
if(i
if(i
)
)
{
{
父
父
进
进
程
程
执
执
行
行
的
的
程
程
序
序
;
;
}
}
else
else
{
{
子
子
进
进
程
程
执
执
行
行
的
的
程
程
序
序
;
;
}
}
父
父
、
、
子
子
进
进
程
程
都
都
执
执
行
行
的
的
程
程
序
序
;
;
}
}