2. 进程的基本操作

接口函数

#include <unistd.h>
//创建子进程
pid_t fork(void);//结束子进程
void exit(int status);//进程等待
#include <sys/wait.h>
pid_t wait(int *stat_loc);//进程睡眠
unsigned int sleep(unsigned int seconds);

2.1 创建子进程

//创建子进程
//pid_t 用于保存PID信息的结构体,如果创建子进程成功,返回子进程PID,
//如果pid == 0 表示子进程
pid_t fork(void);    

2.2 取消进程

void exit(int status);
//exit 用于结束子进程,使用还函数会释放子进程的所有占用资源,status 数值用于返回给父线程

2.3 同步进程

pid_t wait(int *stat_loc);
//wait 用于父进程和子进程同步,父进程调用后,就进入睡眠状态,直到子进程结束或者被其他事件唤醒。

例子:创建子进程,打印父子进程的pid

#include <sys/types.h>    //提供系统调用标志
#include <sys/stat.h>    //提供系统状态信息和相关函数
#include <sys/uio.h>    //提供进程I/O操作函数
#include <unistd.h>        //标准函数库
#include <fcntl.h>        //文件操作相关函数库
#include <string.h>        //字符串操作函数库
#include <sys/wait.h>    //wait调用相关函数库
#include <stdio.h>        //标准输入输出函数库
#include <stdlib.h>        //常用工具函数库int main(int argc, char const *argv[])
{int fd;pid_t pid;char buf[1024] = {0};    //缓冲空间int status;const char *s1="我是子进程";fd = open("file",O_RDWR | O_CREAT, 0755);if(fd < 0){perror("open");return -1;}strcpy(buf,"我是父进程");pid = fork();if(pid == 0){//子进程strcpy(buf,"我是子进程");puts("我是子进程");printf("子进程的pid为 %d\n",getpid());printf("父进程的pid为 %d\n",getppid());write(fd,buf,strlen(buf));close(fd);exit(status);}else if(pid > 0){//父进程puts("我是父进程");printf("父进程的pid是 %d\n",getpid());printf("子进程的pid是 %d\n",pid);write(fd,buf,strlen(buf));close(fd);}else{perror("fork");close(fd);return -1;}wait(&status);return 0;
}

转载于:https://www.cnblogs.com/kmist/p/10634224.html

linux进程篇 (二) 进程的基本控制相关推荐

  1. 操作系统实验一 Linux基本操作|实验二 进程管理

    由于当时没存代码,只有实验文档代码截图,文末也可直接获取实验文档. 操作系统实验 目录 实验一 Linux基本操作 实验二进程管理 实验一 Linux基本操作 1实验目的 1.熟悉在Linux操作系统 ...

  2. linux线程篇,linux线程篇 (二) 线程的基本操作

    线程 进程 标识符 pthread_t pid_t 获取ID pthread_self() getpid() 创建 pthread_create() fork 销毁 pthread_exit() ex ...

  3. linux内核笔记二 进程管理

    三.系统的进程管理 1.系统的进程运转方式 系统时间 (jiffies 系统滴答) cpu内部有一个RTC(系统的定时器),会在上电的时候调用mktime函数算出1970年一月一日0时开始到当前开机点 ...

  4. RK3588平台开发系列讲解(进程篇)进程的简介

    平台 内核版本 安卓版本 RK3588 Linux 5.10 Android 12 文章目录 一.进程的四要素 二.进程的三种状态 三.task_struct数据结构 四.进程优先级 五.进程系统调用 ...

  5. 【Linux基础篇二】VMtools的安装、共享文件夹的设置

  6. Linux基础篇——Linux进程、服务管理

    文章目录 1. 什么是进程 2. Linux下进程与执行者的关系(多人多任务环境) 3. 工作(Job)管理 3.1 将指令丢到后端执行 & 3.2 将目前的工作暂停 Ctrl+z 3.3 j ...

  7. Linux高性能服务器开发——进程篇

    本文主要是学习Linux高性能服务器开发需要提前了解的知识,后续还会涉及到虚拟内存方面的内容,各位看官可以多了解了解,看到文章内有将的不清楚或者讲错的地方请各位一定留言,我看到后会第一时间验证并修正的 ...

  8. vbs结束进程代码_物联网学习教程—Linux系统编程之进程控制

    Linux系统编程之进程控制 一.结束进程 首先,我们回顾一下 C 语言中 continue, break, return 的作用: continue: 结束本次循环 break: 跳出整个循环,或跳 ...

  9. linux内核调用( )为进程创建虚存区_Linux内核分析-总结篇(九)

    本次内容作为Linux内核的总结内容,主要涉及对Linux系统的总体的一些理解,同时将之前的一些总结贴出来作为大家的一个索引,希望笔者一样的菜鸟有一些帮助和入门的作用.从一个初学者的角度对Linux有 ...

最新文章

  1. CXF的webservice接口中字符串参数中文问题
  2. 《Adobe InDesign CS5中文版经典教程》—第1课1.9节查找InDesign帮助资源
  3. boost::core模块default_allocator
  4. C++:C++在图片特定区域之外产生随机数
  5. 真机iOS SDK升级后xcode不能进行真机调试 怎么办
  6. 用户空间与内核空间数据交换的方式(1)------debugfs
  7. 汇编在嵌入式编程中的作用_如何在嵌入式Power BI报表中以编程方式传递凭据
  8. Python资料收藏(杂乱版)
  9. camera驱动电源配置_电源行业发展前景如何?
  10. 为什么selenium定位不到元素
  11. python中的dict是什么数据类型_Python基本数据类型之dict
  12. iis swagger 部署_AspNet Core Api Restful +Swagger 发布IIS 实现微服务之旅 (二)
  13. sql数据库如何分离
  14. Win7/10 远程桌面发生验证错误 要求的函数不受支持 一键解决
  15. 刘润老师的5分钟商学院营销案例~比例偏见!
  16. 捷宇高拍仪D系列 javaweb集成进项目
  17. 【算法】两矩形相交的判定
  18. 欧洲中世纪名剑兵器谱
  19. CentOS8.5系统访问限制
  20. 带有数字钥匙的智能电动车已商用

热门文章

  1. Fiddler 获取、安装与浏览器代理设置,Fiddler的第一次使用
  2. Python 技术篇-3行代码实现语音朗读,pywin32库实现语音朗读
  3. 2.2 图像类型转换
  4. Jobdu MM分水果
  5. matlab之矩阵基础应用
  6. compareto方法_Java compareTo() 字符串方法
  7. quartz与c3p0冲突
  8. 2018.12.15 bzoj3676: [Apio2014]回文串(后缀自动机)
  9. Gym 101128 B Black Vienna
  10. VS2017离线包下载