Linux进程编程实例详解

我们都知道Linux是一个多任务的系统,它可以支持高并发执行任务。可以通过pstree命令查看树状的进程图。

在这里插入图片描述

代码1

#include <stdio.h>
#include <unistd.h>  //这个包里面有getpid和getppid

int main()
{
    printf("系统分配的进程号pid:%d\n", getpid());
    printf("系统分配的父进程号ppid:%d\n", getppid());
    return 0;
}

结果表明的执行时系统为程序分配了进程,且有独立唯一的进程号。

在这里插入图片描述

代码2

#include <stdio.h>
#include <unistd.h>

int main()
{
    char *args[] = {"/usr/bin/vim", NULL};
    printf("系统分配的进程号pid:%d\n", getpid());
    if (execve("/usr/bin/vim", args, NULL))      
        //execve创建进程,执行/usr/bin/vim 
        perror("用execvve创建进程出错");
    return 1;
}

结果正确,直接执行vim的可执行程序

在这里插入图片描述

代码3

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
    int newret;
    printf("系统分配的进程号pid:%d\n", getpid());
    newret = system("ping www.baodu.com");  
    //system调用程序
    return 0;
}

结果直接调用ping

在这里插入图片描述

代码4

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

int main()
{
    pid_t result;
    result = fork();  //调用fork函数
    int newret;
    if (result == -1)    //-1表示失败
    {
        perror("创建子进程失败");
        exit;   //exit退出
    }
    else if (result == 0)   //0 表示时子进程
    {
        printf("返回值是:%d,说明这是子进程!\n此进程的进程号pid:%d\n此进程的父进程号ppid:%d\n", result, getpid(), getppid());
        newret = system("ls -l");    //输出ls -l
    }
    else    //此时是父进程
    {
        sleep(10);    //sleep 10 秒
        printf("返回值是:%d,说明这是父进程!\n此进程的进程号pid:%d\n此进程的父进程号ppid:%d\n", result, getpid(), getppid());
        newret = system("ping www.baidu.com");   //调用ping
    }
}

可以看到调用了ping,说明是父进程

在这里插入图片描述

代码5

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main()
{
    pid_t result;
    result = fork();
    // int newret;
    if (result == -1)  
    {
        perror("创建子进程失败");
        exit(0);
    }
    else if (result == 0)
    {
        printf("测试中止进程的_exit函数!\n");
        printf("这一行用缓存");  
        _exit(0);
    }
    else
    {
        printf("测试中止进程的exit函数!\n");
        printf("这一行用缓存");
        exit(0);
    }
}

使用_exit()

在这里插入图片描述

总结

本次文章学习研究了linux的进程。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值