unix/linux进程详解——代码
#include <iostream>
#include <vector>
#include <cstdint>
#include <cstring>
#include <error.h>
#include <unistd.h>
using namespace std;
int main()
{
//system("ps aux &");//run on background
char *const ps_argv[]={"ps", "ax", 0};
//eg env
char *const ps_envp[]={"PATH=/bin:/usr/bin","TERM=console",0};
//possible exec
//execl("/bin/ps","ps","ax",0);//assume ps in the bin
//execlp("ps","ps","ax",0);//assume /bin is in the PATH
execle("/bin/ps","ps","ax",0,ps_envp);//pass own env
//execv("/bin/ps",ps_argv);
// execvp("ps",ps_argv);
// execve("/bin/ps",ps_argv,ps_envp);
// execlp("ps","ps","ax",0);
pid_t new_pid;
new_pid = fork();
new_pid = getpid();
cout << new_pid << endl;
switch (new_pid) {
case -1:
break;
case 0:
break;
default:
break;
}
cout << "errx" << endl;
return 0;
}
#include <iostream>
#include <vector>
#include <cstdint>
#include <cstring>
#include <error.h>
#include <unistd.h>
#include <sys/types.h>
using namespace std;
int main()
{
pid_t pid;
string message;
int n;
pid = fork();
//pid = getpid();
//cout << pid << endl;
switch (pid) {
case -1:
perror("fork failed");
exit(1);
case 0:
message = "this is the child";
n=5;
break;
default:
message = "this is the parent";
n=3;
break;
}
for(; n > 0;n--)
{
cout<<message<<endl;
sleep(1);
}
//cout << "errx" << endl;
return 0;
}
this is the parent
this is the child
this is the parent
this is the child
this is the parent
this is the child
$ this is the child
this is the child
#include <iostream>
#include <vector>
#include <cstdint>
#include <cstring>
#include <error.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;
int main()
{
pid_t pid;
string message;
int n;
int exit_code;
pid = fork();
//pid = getpid();
//cout << pid << endl;
switch (pid) {
case -1:
perror("fork failed");
exit(1);
case 0:
message = "this is the child";
n=5;
exit_code = 37;//casual set
break;
default:
message = "this is the parent";
exit_code = 0;
n=3;
break;
}
for(; n > 0;n--)
{
cout << message << ",which pid:" << getpid() << endl;
sleep(1);
}
if(pid != 0)
{
int stat_val;
pid_t child_pid;
child_pid = wait(&stat_val);
printf("child has finished: PID = %d\n",child_pid);
if(WIFEXITED(stat_val))
printf("child exited with code %d\n",WEXITSTATUS(stat_val));
else {
printf("child terminated abnormally\n");
}
}
//cout << "errx" << endl;
exit(exit_code);
}
unix/linux进程详解——代码的更多相关文章
- unix/linux进程详解
技术分享 启动新进程 stdlib.hintsystem(const char *string)whichequals to "sh -c string" 替换进程映像unistd ...
- Linux 进程详解
Linux内核的七大区间 .进程管理(进程创建,进程的三种状态,进程间的调度,调度算法...) .内存管理(段式管理(Linux所有段都从0开始),页式管理--地址偏移量) .系统调用(C语言库函数的 ...
- Linux学习之守护进程详解
Linux系统守护进程详解 ---转自:http://yuanbin.blog ...
- Linux 系统结构详解
Linux 系统结构详解 Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统 ...
- PHP 进程详解
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- linux syslog详解
linux syslog详解 分三部分 一.syslog协议介绍 二.syslog函数 三.linux syslog配置 一.syslog协议介绍 1.介绍 在Unix类操作系统上,syslog广 ...
- Linux init详解(转)
Linux init详解 一.什么是INIT: init是Linux系统操作中不可缺少的程序之一. 所谓的init进程,它是一个由内核启动的用户级进程. 内核自行启动(已经被载入内存,开始运行,并已初 ...
- Linux内存详解
--Linux内存详解 -----------------2014/05/24 Linux的内存上表现的不像windows那么直观,本文准备详细的介绍一下Linux的内存. 请看这下有linux命令f ...
- Linux权限详解 命令之 chmod:修改权限
权限简介 Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功. Linux下文件的权限类型一般包括读,写,执行.对应字母为 r.w.x. Li ...
随机推荐
- display & visibility区别
http://www.cnblogs.com/zhangran/archive/2012/08/29/2662459.html 说明:在学习css的过程中由于其中包含太多的元素.属性等等,总有许多是自 ...
- 异步httpCilent框架post提交到服务器
1 导入AsyncHttPclient框架包下的类: 2在主方法写上这代码即可实现post请求:
- 将Spark中CompactBuf转换为String
val rdd = sc.textFile("hdfs://hbase11:9000/sparkTsData/ipsoftware/wincc").map{ line => ...
- HTML 5 应用程序缓存
使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本. 什么是应用程序缓存(Application Cache)? HTML5 引入了应用程序缓存,这 ...
- Windows 下安装项目管理工具 Redmine 1.1.2
1.InstantRails-2.0-win 下载地址 https://rubyforge.org/frs/?group_id=904 2.redmine1.1.2 下载地址 http://www ...
- GCC 编译详解
GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.Gcc不仅功能强大,而且可以编译如C.C++.Object C.Jav ...
- ExtJS学习之路第一步:对比jQuery,认识ExtJS
最近纷杂的事情比较多了,奔波ing!所以,Node.js 和Canvas动画系列都停止了,等稳定了再重拾书本继续学习!因为某种原因最近在看ExtJS,分享下学习的心得,希望对同道中人有所帮助. 第一用 ...
- sql批量获取wordpress所有留言者的邮件地址
如果你的wordpress博客有很多读者互动的话,他们的留言都会留下具体的联系邮箱,我们如何批量导出这些联系信息呢?可以试试下面的sql语句 SELECT DISTINCT comment_autho ...
- zstu.4191: 无向图找环(dfs树 + 邻接表)
4191: 无向图找环 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 117 Solved: 34 Description 给你一副无向图,每条边有 ...
- Coursera台大机器学习课程笔记3 – 机器学习的分类和机器学习的可能性
第三讲比较简单,参考:http://www.cnblogs.com/HappyAngel/p/3466527.html 第四讲很抽象,尤其是第四个视频,目的仍然是为了证明机器学习是可能的,不过这个博主 ...