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 ...
随机推荐
- [UWP小白日记-15]在UWP手机端实时限制Textbox的输入
说实话重来没想到验证输入是如此的苦逼的一件事情. 网上好多验证都是在输入完成后再验证,我的想法是在输入的时候就限制输入,这样我就不用再写代码来验证了 应为是手机端,所以不用判断其他非法字符,直 ...
- [SQL基础教程] 4-4 事务
[SQL基础教程] 4 数据更新 4-4 事务 事务 需要在同一处理单元中执行的一系列更新处理的集合 创建事务 事务开始语句; DML语句1; DML语句2; . . . 事务结束语句; 事务开始语句 ...
- nyoj 79 拦截导弹 (动态规划)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=79 题意即求最长单调递减子序列 #include<iostream> #inc ...
- C# 语言规范_版本5.0 (第21章 附录C_参考资料)
A. 参考资料 Unicode 联合会.The Unicode Standard, Version 3.0(Unicode 标准 3.0 版).Addison-Wesley,Reading,Massa ...
- 利用VR技术,走进白宫,走进奥巴马
奥马巴卸任演讲由诺基亚OZO全程360° VR直播,并不是每个人都能去白宫拜访,一窥白宫内部的模样,更不可能有多少人有机会在奥马巴面前听他讲讲他的家. 现在前任总统巴拉克奥巴马以及其夫人米歇尔奥巴 ...
- Oracle与Sqlserver:Order by NULL值介绍
针对页面传参到in的子集中去进行查询操作的话,就会有in(xxx,null),这样就会导致查询的结果中其实直接过滤掉了null,根本就查不出来null的值.之前对于null的操作都是进行不同数据库的n ...
- C++的第一天
第一次写博客,第一天的C++,从第一讲视屏中了解到了,类,对象,oop编程思想 1.类包括对象和对象的行为,对象具有静态连接(对象的名字)和动态链接(对象的行为),视屏中提到了多态性,应该是不同的类具 ...
- C语言 · FJ的字符串
问题描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = "ABACABA" A4 = "AB ...
- Linux下重置MySQL的Root帐号密码
1.停止MySQL服务 /etc/init.d/mysqld stop 2.跳过验证启动MySQL /usr/local/mysql/bin/mysqld_safe --skip-grant-tabl ...
- CSU 1810 Reverse
湖南省第十二届大学生计算机程序设计竞赛$H$题 规律,递推. 这种问题一看就有规律.可以按位统计对答案的贡献.即第$1$位对答案作出了多少贡献,第$2$位对答案作出了多少贡献.....累加和就是答案. ...