Linux C编程:进程编程

进程编程基础

1. fork()

在linux中创建一个新进程的方法是使用fork()函数(一个特殊函数,看起来执行一次返回两个值)。

1-1. fork()函数说明:

fork()函数用于从已存在的进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。使用fork()函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间,包括进程上下文、代码段、进程堆栈、内存信息、打开的文件描述符、信号处理函数、进程的优先级、进程组号、当前工作目录、根目录、资源限制和控制终端等,而子进程所独有的只有它的进程号、资源使用和计数器等。

因为子进程几乎是父进程的完全复制,所以父子两个进程会运行同一个程序,因此需要用一种方式来区分它们,并使它们照此运行,否则,这两个进程只能做相同的事。

父子进程是一个很重要的区别是:fork()的返回值不同,通过返回值来判断该进程是父进程还是子进程。

注意:子进程没有执行fork()函数,而是从fork()函数调用的下一条语句开始执行。

1-2. fork()函数语法:

 

/*******************************************************************
 *   > File Name: fork.c
 *   > Author: fly
 *   > Mail: 1358326274@qq.com
 *   > Create Time: 2021年03月09日 星期二 22时34分53秒
 ******************************************************************/
 
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
 
int main(int argc, char* argv[])
{
    pid_t ret;
 
    ret = fork();
    if(ret == -1)
    {
        perror("fork error");
        return -1;
    }
    else if(ret == 0)
    {
        printf("In child process! ret: %d, PID: %d, PPID: %d\n", ret, getpid(), getppid());
    }
    else 
    {
        printf("In parent process! ret: %d, PID: %d, PPID: %d\n", ret, getpid(), getppid());
    }
 
    return 0;
}
运行结果:
In parent process! ret: 64675, PID: 64674, PPID: 3724
In child process! ret: 0, PID: 64675, PPID: 64674

2. exec 函数族

2-1.exec函数族说明

 

2-2.exec函数族语法

 

2-3.exec使用实例

 

3.exit()和_exit()

3-1.exit()和_exit()函数说明

 

3-2.exit()和_exit()函数语法

 

3-3.exit()和_exit()使用实例

 

4.wait()和waitpid()

3-1.wait()和waitpid()函数说明

 

3-2.wait()和waitpid()函数语法

 

3-3.wait()和waitpid()使用实例

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值