LINUX多进程编程 简单实例

1.ps与top命令 查看进程状态

2.系统调用ping,并执行

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{int main()
{char *exec_argv[4];exec_argv[0] = "ping";exec_argv[1] = "127.0.0.1"; exec_argv[2] = NULL;exec_argv[3] = NULL;if (execv("/bin/ping", exec_argv) == -1){printf("execv error!\n");}return 0;
}

3.用户程序调用

父进程包含子进程的创建,父子进程都包含死循环。
【Crtl+C】终止进程

#include<signal.h>
#include<unistd.h>
#include<sys/types.h>#include <stdio.h>
#include <string.h>
#include <stdlib.h>int wait_flag;
void stop();int main()
{pid_t pid1,pid2;signal(2, stop);pause();while((pid1=fork())==-1);if(pid1>0){while((pid2=fork())==-1);if(pid2>0){   wait_flag=1;sleep(5);kill(pid1,16);kill(pid2,17);wait(0);wait(0); printf("the program is over!\n");exit(0);}else{wait_flag=1;signal(17,stop);printf("chile process 2 is over!\n");exit(0);}}else{wait_flag=1;signal(16,stop);printf("chile process 1 is over!\n");exit(0);}
}//Ctrl+C终止程序
void stop()
{wait_flag=0;printf("I am in stop!\n");
}

程序运行截图:

4.fork命令打印PID

#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>//print pid of fatherprocess and childprocessint main()
{pid_t pid;if((pid = fork()) < 0 ){printf("erro");exit(0);}else if(pid == 0){printf("child process pid:%d\n", getpid());}else{printf("father process pid:%d\n", getpid());}return 0;
}

运行截图:

5.利用fork和execv函数组创建一个多进程程序:

• 父进程创建子进程后,一直等待;
• 子进程显示当前运行的进程情况
• 父进程在子进程完成后,结束父进程

#include <unistd.h>
#include <signal.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/wait.h>#include<stdio.h>
#include<stdlib.h>//ping host ip int main()
{pid_t pid;char  *a[6];a[0]="ping";a[1]="-c";a[2]="4";  //ping for 4a[3]="127.0.0.1";a[4]=NULL;a[5]=NULL;if((pid=fork()) < 0){printf("error");exit(0);}//child processelse if(pid==0){printf("child process:\n");execv("/bin/ping",a);printf("command error\n");}else  //father process{wait(NULL);printf("Father process :child process is over.\n");}
}

运行截图:
注: fork() 系统调用用于创建一个新进程,称为子进程,它与进程(称为系统调用fork的进程)同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。
若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1。

LINUX 多进程编程 C语言实例相关推荐

  1. Linux -- 多进程编程之 - 守护进程

    内容概要 一.守护进程概述 二.守护进程创建 2.1.创建子进程,父进程退出 2.2.在子进程中创建新会话 2.2.1.进程组和会话期 2.2.2.setsid()函数说明 2.3.改变当前工作目录 ...

  2. linux多进程编程(一)

    2019独角兽企业重金招聘Python工程师标准>>> 最近因为一个偶然的原因要在linux平台上做一个模拟实验,其中要涉及到多进程的编程,所以特此写一系列的博客来总结一下多进程的编 ...

  3. Linux多进程编程(2)

    简介 IPC(Inter Process Communication,进程间通信)的方式总共有三种,分别是信号量.共享内存和消息队列,本文介绍前两种. 在Linux中,进程之间操作公共数据时,需要进行 ...

  4. Linux多进程编程之在线词典

    在线词典是基于Linux 多进程并发服务器编程,由服务器端和客户端构成,客户端可以运行在多个不同的主机上连接服务器,服务器对员工信息的操作结果通过数据库sqlite来保存.当用户登录后,根据用户名判断 ...

  5. python多进程编程实例_Python多进程编程multiprocessing代码实例

    下面记录一下多进程编程的别一种方式,即使用multiprocessing编程 import multiprocessing import time def get_html(n): time.slee ...

  6. c语言多进程编程,C语言中的多进程

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 序言 为了充分利用计算机中的多核CPU,计算机提供了两个接口使用多核CPU,两个接口分别是:多进程.多线程.本编文章将介 ...

  7. Linux多进程编程

    fork系统调用 #include <sys/types.h> #include <unistd.h>/* Clone the calling process, creatin ...

  8. [Linux网络编程]ARP简单实例

    一个简单的ARP实例. 先声明,本文是基于于一篇来自邹鑫的专栏的文章,地址如下: http://blog.csdn.net/zouxinfox/archive/2008/10/25/3141323.a ...

  9. 四阶幻方c语言编程,C语言实例 求四阶的素数幻方

    求四阶的素数幻方.即在一个4X4 的矩阵中,每一个格填 入一个数字,使每一行.每一列和两条对角线上的4 个数字所组成的四位数,均为可逆素数. *问题分析与算法设计 有了前面的基础,本题应当说是不困难的 ...

最新文章

  1. linux c 内存分配函数
  2. SGU - 507 启发式合并维护平衡树信息
  3. SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解
  4. imagecomposition工程分析
  5. qt 实现 以图片为中心 让它旋转_QT图片旋转动画
  6. 山体等高线怎么看_每日一题 | 此处向斜山,你看出来了吗?
  7. ./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No suc
  8. apple组织名称是什么_什么是Apple Macintosh?
  9. 操作系统之进程管理:9、进程互斥的硬件实现方法
  10. 记录一些常见的沟通问题 #29
  11. 华为云薛浩:媒体业务进入全面云化时代,云原生成为必然选择
  12. 如何定制日历控件显示的星期文字
  13. eclipse 安装和使用AmaterasUML
  14. Facebook正在追踪你,哪怕你不是用户丨扎克伯格国会听证第二日
  15. python 安装setuptools时报Compression requires the (missing) zlib module错误的解决方案
  16. 「轻阅读」基于 Flink SQL CDC的实时数据同步方案,附视频教程
  17. Win10 通过注册表修改默认应用
  18. js替换url指定参数的值
  19. 哈希表、哈希桶(C++实现)
  20. 2019软件工程专业大学排名附官网-奥怪的小栈

热门文章

  1. php httponly_php设置cookie为HttpOnly防止XSS攻击
  2. 老黄历java_老黄历.html
  3. 电磁阀位、通、开/闭原理精髓
  4. startswith 和 endswith
  5. Clibrary | <cstdio>库的介绍(详)附代码
  6. 16岁黑客入侵腾讯系统入狱,后做手游创业赚数亿,如今31岁的他在哪里?
  7. 那个16岁盗走马化腾QQ 震惊央视的农村男孩去哪了
  8. 老骥伏枥,志在千里:如何在40岁后继续做软件开发?
  9. Oracle法人实体的法规类别,Oracle EBS中分类账和法人实体 的关系(有sql语句实例)...
  10. Mysql 执行一条语句的过程