进程原语
1. 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
2. 进程环境
在libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时要用extern声明。用以下代码可以查看当前进程的所有环境变量的信息。
#include <stdio.h>
int main(void)
{
extern char **environ;
int i;
for(i = 0; environ[i] != NULL; i++)
printf("%s\n", environ[i]);
return 0;
}
运行结果用键值对的形式展示环境变量的信息。几个常见的环境变量解释:
PATH:可执行文件的搜索路径。
SHELL:当前使用的shell。
HOME:当前用户的主目录路径。
3. 进程状态
4种主要的进程状态:运行、就绪、挂起、终止。
4. 进程原语
在liunx中使用函数fork创建新的进程。
#include <unistd.h>
pid_t fork(void);
函数特点:调用一次,返回两次。
在父进程中,返回创建的子进程的pid;在子进程中返回0;出错,返回-1。
一个创建子进程的实例:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
void sys_err(char *s)
{
perror(s);
exit(1);
}
int main(void)
{
pid_t pid;
pid = fork();
if (pid < 0)
sys_err("fork");
else if (pid > 0)
{
/* parent process */
printf("I am parent,my pid is %d, my parent pid is %d\n", getpid(), getppid());
sleep(1); //休眠1秒,防止父进程过早退出
}
else