首页 > 系统相关 >Linux进程编程实例详解

Linux进程编程实例详解

时间:2023-03-28 09:22:45浏览次数:37  
标签:printf int 编程 详解 exit result Linux 进程 include

我们都知道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 宝都国际");  
    //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 http://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的进程。

标签:printf,int,编程,详解,exit,result,Linux,进程,include
From: https://www.cnblogs.com/q-q56731526/p/17263811.html

相关文章

  • 常用的linux操作命令
    1、查看docker容器里面部署了哪些微服务的命令;docker ps2、查看某台机器上面防火墙开通了哪些端口;firewall-cmd--list-all 3、开启防火墙端口;  1)添加......
  • 并发编程的优缺点
    为什么要使用并发编程(并发编程的优点)充分利用多核CPU的计算能力方便进行业务拆分,提升系统并发能力和性能并发编程的缺点并发编程的目的就是为了能提高程序的执行效率......
  • 15 redis在Linux上的简单应用
    redis非关系型数据库redis的安装安装:yuminstallredis卸载:yumremoveredisredis的管理启动redis:systemctlstartredis查看redis的运行状态:systemctlstatusre......
  • linux sed 批量替换文件中的字符串或符号
    sed-i:直接修改读取的文件内容,而不是输出到终端。 sed-i 就是直接对文本文件进行操作的 替换每行第一次出现的字符串sed-i's/查找的字符串/替换的字符串/'文......
  • linux版本查看命令
    一、查看Linux内核版本命令(两种方法):1、cat/proc/version2、uname-a二、查看Linux系统版本的命令(3种方法):1、lsb_release-a,即可列出所有版本信息:这个命令适用于所......
  • window和linux如何将go代码打包成可执行程序
    前言:在window下代码写好了,如何部署到linux呢,或者怎么打包成exe程序,在window下运行呢?查看正文正文:window下如何打包成exe文件,并运行。打开goland,点击Terminal终端输入......
  • Rocky Linux 系列8 --- 分区方案
    一、概要1.环境(1)RockyLinux9.1(2)RHEL8系列对于RHEL系列的Linux系统来讲,必须的分区有/root和swap,此外为确保系统的健壮性,强烈推荐针对/boot和/var进行分区。......
  • Linux下 Java 读取文件路径
    一般文件路径在windows中用\表示,但是在其他系统平台下比如linux中就不是\所以java给我们提供了一个与平台无关的表示路径的常量File.separator在windows中则表示\比......
  • Linux恢复文件双手锏
    导读当你在系统中有意或无意地使用 shift+delete 组合键、删除选项,或是清空回收站的方式来删除一个文件时,该文件的内容并没有从硬盘(或是其它存储设备)上直接销毁。......
  • Linux用户和用户组管理/etc目录解释
    1. /etc/passwd内容解释root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinadmin:x:3:3:admin:/d......