#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进程详解——代码的更多相关文章

  1. unix/linux进程详解

    技术分享 启动新进程 stdlib.hintsystem(const char *string)whichequals to "sh -c string" 替换进程映像unistd ...

  2. Linux 进程详解

    Linux内核的七大区间 .进程管理(进程创建,进程的三种状态,进程间的调度,调度算法...) .内存管理(段式管理(Linux所有段都从0开始),页式管理--地址偏移量) .系统调用(C语言库函数的 ...

  3. Linux学习之守护进程详解

    Linux系统守护进程详解                                                              ---转自:http://yuanbin.blog ...

  4. Linux 系统结构详解

    Linux 系统结构详解 Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统 ...

  5. PHP 进程详解

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  6. linux syslog详解

    linux syslog详解 分三部分 一.syslog协议介绍 二.syslog函数 三.linux syslog配置   一.syslog协议介绍 1.介绍 在Unix类操作系统上,syslog广 ...

  7. Linux init详解(转)

    Linux init详解 一.什么是INIT: init是Linux系统操作中不可缺少的程序之一. 所谓的init进程,它是一个由内核启动的用户级进程. 内核自行启动(已经被载入内存,开始运行,并已初 ...

  8. Linux内存详解

    --Linux内存详解 -----------------2014/05/24 Linux的内存上表现的不像windows那么直观,本文准备详细的介绍一下Linux的内存. 请看这下有linux命令f ...

  9. Linux权限详解 命令之 chmod:修改权限

    权限简介 Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功. Linux下文件的权限类型一般包括读,写,执行.对应字母为 r.w.x. Li ...

随机推荐

  1. a[1000][1000]程序崩溃

    1000 * 1000是大于65536的.如果不是需求需要,没必要开辟如此之多的空间.因为这些空间实在栈上申请的(如果是局部变量),栈的空间是有限的并且是宝贵的,所以呢,开辟太多的空间而不适用很可能会 ...

  2. 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 ...

  3. easyUI框架之学习1--框架

    <!DOCTYPE html><html> <head > <link href="~/Scripts/easyUI/themes/default/ ...

  4. 在tp中使用mongo数据库并建立连接的实例

  5. hdu 1049 Climbing Worm

    解题思路: 1. 两种情况,0x1:井深度小于一次跳的高度.0x2:井深度大于一次跳的高度 2.如果 属于 0x1 则一次跳出 3.否则 本次解题中直接枚举跳的次数 一直循环,直到 [每次跳的真实高度 ...

  6. sencha touch list(列表)、 store(数据源)、model(模型)详解

    //求职 Ext.define('app.model.Staff', { extend: 'Ext.data.Model', config: { fields: [{ name: 'id', type ...

  7. derby的三大缺陷

    derby的三大缺陷 derby数据库的嵌入式特性让人很流口水.但是,我刚打算将其用进我的项目中,却发现它没有好的分页查询方式,每次都返回所有符合条件的记录.oracle有rownum,mysql有l ...

  8. 新浪微博客户端(8)-添加按钮到TabBar

    在tabBar的中部添加一个发送微博的按钮. DJTabBar.h #import <UIKit/UIKit.h> @class DJTabBar; @protocol DJTabBarD ...

  9. 教你安装漂亮的Arc GTK主题

    导读 近日,我们又发现了一款深受 Linux 用户喜爱的桌面主题 — Arc GTK,Arc GTK 主题已被很多 GNU/Linux 操作系统支持和采用,其中就包括即将到来的 Linux Mint ...

  10. [BZOJ1171][BZOJ2892]大sz的游戏

    [BZOJ1171][BZOJ2892]大sz的游戏 试题描述 大sz最近在玩一个由星球大战改编的游戏.话说绝地武士当前共控制了N个星球.但是,西斯正在暗处悄悄地准备他们的复仇计划.绝地评议会也感觉到 ...