Linux系统编程2:进程的创建、结束、停止

本文详细介绍了Linux系统中进程的创建、结束和停止,包括使用fork()、exec()函数创建进程,通过exit()、pause()、sleep()函数结束或暂停进程,以及system()函数的运用。此外,还探讨了特殊进程的相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.进程操作接口

获取PID

进程标识pid:进程身份证号
在这里插入图片描述

  • 示例
#include <stdio.h>
#include <unistd.h>
 
int main(){
   
    printf("PID:%dPPID:%d\n",getpid(),getppid());
}

如何查看进程的PID和PPID? ps -o pid,ppid,cmd,s

2.如何创建进程

2.1 分叉函数pid_t fork()

  • 返回值
    在这里插入图片描述

  • 特点

    • 调用一次,返回两次
    • 相同但是独立的地址空间
    • 并发执行
    • 共享文件
  • 示例

调用一次,返回两次

#include <stdio.h>
#include <unistd.h>
 
int main(){
   
    printf("PID:%d,PPID:%d\n",getpid(),getppid());
    pid_t pid = fork();
    fork();
    if(pid == 0){
   // child
        printf("this is child\n");
        printf("res:%d,PID:%d,PPID:%d\n",pid,getpid(),getppid());
    }else{
   
        printf("this is father\n");
        printf("res:%d,PID:%d,PPID:%d\n",pid,getpid(),getppid());
    }
    for(;;);
}

相同但是独立的地址空间&并发执行

#include <stdio.h>
#include <unistd.h>
int i = 100;
int main(){
   
    int j=100;
    pid_t pid = fork();
    if(pid == 0){
   // child
        int k;
        for(k=0;k<10000;k++)
            printf("this is childi%d\t j%d\n",++i,++j);
    }else{
   
        int k;
        for(k=0;k<10000;k++)
            printf("this is fatheri%d\t j%d\n",--i,--j);
    }
}

共享文件

#include <stdio.h>
#include <unistd.h>
int i = 100;
int main(){
   
    int j=100;
    FILE* fd = fopen("./test","w+");
    pid_t pid = fork();
    if(pid == 0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值