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 ...
随机推荐
- a[1000][1000]程序崩溃
1000 * 1000是大于65536的.如果不是需求需要,没必要开辟如此之多的空间.因为这些空间实在栈上申请的(如果是局部变量),栈的空间是有限的并且是宝贵的,所以呢,开辟太多的空间而不适用很可能会 ...
- ubuntu 12.04 server + OPENACS(TR069)安装配置日记
1. 有两个叫openacs的, openacs.org下的不是 2. 严格匹配版本:luo@bogon:~$ ls jboss-4.2.3.GA-jdk6.zip jdk-6u41-linux-i ...
- easyUI框架之学习1--框架
<!DOCTYPE html><html> <head > <link href="~/Scripts/easyUI/themes/default/ ...
- 在tp中使用mongo数据库并建立连接的实例
- hdu 1049 Climbing Worm
解题思路: 1. 两种情况,0x1:井深度小于一次跳的高度.0x2:井深度大于一次跳的高度 2.如果 属于 0x1 则一次跳出 3.否则 本次解题中直接枚举跳的次数 一直循环,直到 [每次跳的真实高度 ...
- sencha touch list(列表)、 store(数据源)、model(模型)详解
//求职 Ext.define('app.model.Staff', { extend: 'Ext.data.Model', config: { fields: [{ name: 'id', type ...
- derby的三大缺陷
derby的三大缺陷 derby数据库的嵌入式特性让人很流口水.但是,我刚打算将其用进我的项目中,却发现它没有好的分页查询方式,每次都返回所有符合条件的记录.oracle有rownum,mysql有l ...
- 新浪微博客户端(8)-添加按钮到TabBar
在tabBar的中部添加一个发送微博的按钮. DJTabBar.h #import <UIKit/UIKit.h> @class DJTabBar; @protocol DJTabBarD ...
- 教你安装漂亮的Arc GTK主题
导读 近日,我们又发现了一款深受 Linux 用户喜爱的桌面主题 — Arc GTK,Arc GTK 主题已被很多 GNU/Linux 操作系统支持和采用,其中就包括即将到来的 Linux Mint ...
- [BZOJ1171][BZOJ2892]大sz的游戏
[BZOJ1171][BZOJ2892]大sz的游戏 试题描述 大sz最近在玩一个由星球大战改编的游戏.话说绝地武士当前共控制了N个星球.但是,西斯正在暗处悄悄地准备他们的复仇计划.绝地评议会也感觉到 ...