Linux启动新进程的几种方法及比较[转]
- #include <stdlib.h>
- int system (const char *string);
- #include <stdlib.h>
- #include <stdio.h>
- int main()
- {
- printf("Running ps with system\n");
- //ps进程结束后才返回,才能继续执行下面的代码
- system("ps au");// 1
- printf("ps Done\n");
- exit(0);
- }
- #include <unistd.h>
- char **environ;
- int execl (const char *path, const char *arg0, ..., (char*)0);
- int execlp(const char *file, const char *arg0, ..., (char*)0);
- int execle(const char *path, const char *arg0, ..., (char*)0, char *const envp[]);
- int execv (const char *path, char *const argv[]);
- int execvp(cosnt char *file, char *const argv[]);
- int execve(const char *path, char *const argv[], char *const envp[]);
- char *const ps_envp[] = {"PATH=/bin:usr/bin", "TERM=console", 0};
- char *const ps_argv[] = {"ps", "au", 0};
- execl("/bin/ps", "ps", "au", 0);
- execlp("ps", "ps", "au", 0);
- execle("/bin/ps", "ps", "au", 0, ps_envp);
- execv("/bin/ps", ps_argv);
- execvp("ps", ps_argv);
- execve("/bin/ps", ps_argv, ps_envp);
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- printf("Running ps with execlp\n");
- execlp("ps", "ps", "au", (char*)0);
- printf("ps Done");
- exit(0);
- }
- #include <sys/type.h>
- #include <unistd.h>
- pid_t fork();
- #include <unistd.h>
- #include <sys/types.h>
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- pid_t pid = fork();
- switch(pid)
- {
- case -1:
- perror("fork failed");
- exit(1);
- break;
- case 0:
- //这是在子进程中,调用execlp切换为ps进程
- printf("\n");
- execlp("ps", "ps", "au", 0);
- break;
- default:
- //这是在父进程中,输出相关提示信息
- printf("Parent, ps Done\n");
- break;
- }
- exit(0);
- }
- #include <sys/types.h>
- #include <sys/wait.h>
- pid_t wait(int *stat_loc);
- pid_t waitpid(pid_t pid, int *stat_loc, int options);
- #include <unistd.h>
- #include <sys/types.h>
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- pid_t pid = fork();
- int stat = 0;
- switch(pid)
- {
- case -1:
- perror("fork failed");
- exit(1);
- break;
- case 0:
- //这是在子进程中,调用execlp切换为ps进程
- printf("\n");
- execlp("ps", "ps", "au", 0);
- break;
- default:
- //这是在父进程中,等待子进程结束并输出相关提示信息
- pid = wait(&stat);
- printf("Child has finished: PID = %d\n", pid);
- //检查子进程的退出状态
- if(WIFEXITED(stat))
- printf("Child exited with code %d\n", WEXITSTATUS(stat));
- else
- printf("Child terminated abnormally\n");
- printf("Parent, ps Done\n");
- break;
- }
- exit(0);
- }
Linux启动新进程的几种方法及比较[转]的更多相关文章
- Linux启动新进程的几种方法汇总
有时候,我们需要在自己的程序(进程)中启动另一个程序(进程)来帮助我们完成一些工作,那么我们需要怎么才能在自己的进程中启动其他的进程呢?在Linux中提供了不少的方法来实现这一点,下面就来介绍一个这些 ...
- Linux启动新进程的几种方法及比较
有时候,我们需要在自己的程序(进程)中启动另一个程序(进程)来帮助我们完成一些工作,那么我们需要怎么才能在自己的进程中启动其他的进程呢?在Linux中提供了不少的方法来实现这一点,下面就来介绍一个这些 ...
- Linux启动新进程的三种方法
程序中,我们有时需要启动一个新的进程,来完成其他的工作.下面介绍了三种实现方法,以及这三种方法之间的区别. 1.system函数-调用shell进程,开启新进程system函数,是通过启动shell进 ...
- Linux中Kill进程的N种方法
常规篇: 首先,用ps查看进程,方法如下: $ ps -ef …… smx 1822 1 0 11:38 ? 00:00:49 gnome-terminal smx ...
- linux 下隐藏进程的一种方法
前言 本文所用到的工具在 https://github.com/gianlucaborello/libprocesshider 可以下载 思路就是利用 LD_PRELOAD 来实现系统函数的劫持 LD ...
- Linux之Kill进程的N种方法
常规篇: 首先,用ps查看进程,方法如下: $ ps -ef …… smx 1822 1 0 11:38 ? 00:00:49 gnome-terminal smx ...
- linux下查询进程占用的内存方法总结
linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」.现在想要查询该进程占用的内存大小.linux命令行下有很多的工具进行查看,现总结常见的几种方 ...
- python实现Linux启动守护进程
python实现Linux启动守护进程 DaemonClass.py代码: #/usr/bin/env python # -*- coding: utf-8 -*- import sys import ...
- Linux 下操作GPIO(两种方法,驱动和mmap)(转载)
目前我所知道的在Linux下操作GPIO有两种方法: 1.编写驱动,这当然要熟悉Linux下驱动的编写方法和技巧,在驱动里可以使用ioremap函数获得GPIO物理基地址指针,然后使用这个指针根据io ...
随机推荐
- Java反射机制浅析
概念 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...
- python简易爬虫实现
目的:爬取昵称 目标网站:糗事百科 依赖的库文件:request.sys.beautifulSoup4.imp.io Python使用版本:3.4 说明:参考http://cn.python-requ ...
- MATLAB中的多项式运算
作者:长沙理工大学 交通运输工程学院 王航臣 1.多项式求根 在MATLAB中求取多项式的根用roots函数. 函数:roots 功能:一元高次方程求解. 语法:roots(c) 说明:返回一个列向量 ...
- git的入门使用操作
Git html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,addres ...
- 2-Bom
前言 window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子对象.由于window是顶层对象,因此调用它的子对象时可以不显示的指明window对象 例如下 ...
- hadoop,yarn和vcpu资源配置
Hadoop YARN同时支持内存和CPU两种资源的调度(默认只支持内存,如果想进一步调度CPU,需要自己进行一些配置),本文将介绍YARN是如何对这些资源进行调度和隔离的. 在YARN中,资源管理 ...
- Web中的无状态含义
REST架构设计是目前非常火热的概念,已经成为构建web服务时应该遵循的事实标准.REST约束中有一条很重要的规则是“无状态”,但“无状态”是个很抽象的概念,对刚刚接触的人来讲,很难深刻形象的理解.今 ...
- java 缩放函数drawImage理解(个人总结)
drawImagepublic abstract boolean drawImage(Image img, int dx1, ...
- DataGrid 导出数据到 Excel
Private Sub GridToExl_Click() On Error Resume Next If DataGrid1.Columns.Count = 0 Then MsgBox " ...
- 压测软件-Tsung.安装篇
author :James,jimingsong@vip.qq.com author :James,jimingsong@vip.qq.com since :2015-03-02 tsung介绍 ts ...