1.进程ID

每一个进程都由一个唯一的标识符表示,即进程ID,简称pid.系统保证在某时刻每个pid都是唯一的。

1.1分配进程ID

缺省情况下,内核将进程ID的最大值限制为32768,可以在此处设置/proc/sys/kernel/pid_max,在短时间内,内核不会重用已经分配的ID.

2.获得进程id和父进程id

  #include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(){int pid=getpid();int ppid=getppid();printf("pid:%d ppid:%d \n",pid,ppid);}

3.运行新进程

首先创建新的进程fork()

在新的进程中执行程序exec系列的系统调用

4.exec系列的系统调用

execl()函数的原型为 int execl(const char *path,const char *arg,...)

path是程序路径,arg是传递给指定程序的可变长度参数列表,最后必须是null结尾

const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据。

通常情况下execl()不会返回结果,成功的调用会以跳到新的程序的入口点作为结束,错误的时候会返回-1

         int ret;ret=execl("/usr/bin/vim","vim","text.txt",NULL);if(ret==1){printf("execl error");}

5.fork()系统调用

创建一个和当前进程映像一样的进程可以通过fork()系统调用,调用者从fork()返回后,仍然继续运行。

当前进程就是父进程,创建成功的进程是子进程。

在父进程成功的fork()调用,会返回子进程的pid

在子进程fork()调用会返回0

#include <stdio.h>
#include <unistd.h>
int main(){int pid,ppid;int ret=fork();if(ret>0){pid=getpid();ppid=getppid();printf("我是父进程,pid=%d , ppid=%d ,我新建的子进程pid=%d\n",pi
d,ppid,ret);sleep(3);//父进程不能太快终止,否则看不出子进程ppid的效果}else if(ret==0){pid=getpid();ppid=getppid();printf("我是子进程,pid=%d , ppid=%d \n",pid,ppid);}else if(ret==-1){perror("fork");}
}

我是父进程,pid=13890 , ppid=10038 ,我新建的子进程pid=13891

我是子进程,pid=13891 , ppid=13890

[Linux]C语言Linux系统编程创建进程相关推荐

  1. linux系统编程之进程(八):守护进程详解及创建,daemon()使用

    linux系统编程之进程(八):守护进程详解及创建,daemon()使用 一,守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等 ...

  2. linux系统编程之进程概念(操作系统---管理,进程创建,进程状态,进程优先级, 环境变量,程序地址空间,进程O(1)调度方法)

    系统编程: 进程概念->进程控制->基础IO->进程间通信->进程信号->多线程 进程概念 冯诺依曼体系结构----现代计算机硬件体系结构 冯诺依曼体系结构----现代计 ...

  3. 【Linux系统编程】进程概述和进程号

    00. 目录 文章目录 00. 目录 01. 进程概述 02. 进程状态 03. 进程控制块 04. 进程号 05. 进程号相关函数 06. 案例实战 07. 附录 01. 进程概述 我们平时写的 C ...

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

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

  5. 【Linux系统编程】进程替换:exec 函数族

    00. 目录 文章目录 00. 目录 01. exec函数族 02. 参考示例 2.1 execl函数示例 2.2 execv函数示例 2.3 execlp() 或 execvp()函数示例 2.4 ...

  6. 【Linux系统编程】进程退出和回收进程资源

    00. 目录 文章目录 00. 目录 01. 进程退出函数 02. 进程退出讨论 03. 回收进程资源 04. 附录 01. 进程退出函数 #include <stdlib.h>void ...

  7. Linux系统编程之进程与线程控制原语对比

    Linux系统编程之进程与线程控制原语对比 进程 线程 fork pthread_create exit pthread_exit wait pthread_join kill pthread_can ...

  8. 《全面掌握Linux C语言嵌入式系统移植教程》学习笔记(Liunx速查简明)

    全面掌握Linux C语言嵌入式系统移植教程学习笔记(Liunx速查简明) 笔记前言: P3: shell命令简明 P4: vi /vim编辑器入门 P5:vi /vim编辑器扩展 P8: gcc编译 ...

  9. linux服务器开发二(系统编程)--线程相关

    线程概念 什么是线程 LWP:Light Weight Process,轻量级的进程,本质仍是进程(在Linux环境下). 进程:独立地址空间,拥有PCB. 线程:也有PCB,但没有独立的地址空间(共 ...

最新文章

  1. pytorch可视化 resnet50特征图
  2. VS.Net 2005 Beta2连接Team Foundation Server的问题
  3. Java 猜字谜游戏
  4. 前端小秘密系列之闭包
  5. unity去掉物体的阴影
  6. 麻瓜编程python web_python web麻瓜编程教程
  7. mbot编程机器人怎么连接蓝牙_STEAM教育机器人搭建指南,mBot入门级编程机器人搭建教程...
  8. mac系统vscode头文件not found
  9. 监听软键盘中的删除键
  10. 【研究生本科论文】论文语言常见的五个问题
  11. Scratch3.0创意编程(基础篇):第10课 接苹果
  12. 网络服务器充斥大量信息,使网络服务器中充斥着大量要求回复的信息,消耗带宽,导致网络或系统停止正常服务,这属于什么攻 - 普法考试题库问答...
  13. c语言五猴分桃案例分析,C语言程序设计五猴分桃问题实验报告.doc
  14. VIVO内置应用卸载指南(IQOO NEO5为例)
  15. linux中创建目录树,linux怎样创建目录树
  16. sqlserver+asp.net+devextreme从零开始(1)
  17. Android 10.0锁屏界面默认不显示Notification通知
  18. 你以为打上马赛克就安全了吗?用Python一键还原,了解一下?
  19. Windows + VS Code搭建 Go 开发环境
  20. Go Signal信号处理

热门文章

  1. python官网如何调中文-django的settings中设置中文支持的实现
  2. 风云编程python-首页
  3. python 调用linux命令-Python Linux系统管理之Python中执行外部命令
  4. python开发需要掌握哪些知识-Python的8个基础知识点,新手必须背下来!
  5. python pandas读取excel-python pandas 读取文件 写入文件excel
  6. 北京python培训班价格-北京Python启蒙班
  7. FTP,SFTP,FTPS三个文件传输协议的区别
  8. html5知识总结,HTML5初级知识总结
  9. 题目1191:矩阵最大值
  10. JAVA byte[] String