IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> linux系统、网络等开发-02 -> 正文阅读

[系统运维]linux系统、网络等开发-02

工作需要,和大家共同学习总结。(学习的内容为传智播客linux服务器开发二、三部分)

1、execlp执行程序并将结果写入文件:?

#include<unistd.h>
#include<fcntl.h>
#include<cstdlib>
#include<iostream>
using namespace std;
int main(){
    pid_t pid;
    int fd;
    cout<<"execlp test"<<endl;
    fd=open("ps.out",O_WRONLY|O_CREAT|O_TRUNC,0644);
    if(fd<0){
        cout<<"open ps.out error"<<endl;
        return 1;
    }
    //目标 源
    dup2(fd,STDOUT_FILENO);
    execlp("ps","ps","aux",NULL);
    close(fd);
    return 0;
}

2、孤儿进程

父进程先于子进程结束,子进程成为孤儿进程。 子进程的父进程成为init进程,称为init领养孤儿进程。

3、僵尸进程

进程终止,父进程尚未回收,子进程残留资源(PCB)存放在内核中,变成僵尸进程。

主进程中使用wait()阻塞地回收单个子进程,waitpid()可以指定pid进程清理,可以不阻塞。

?这里wait(NULL)删除了随机的一个子进程

#include<unistd.h>
#include<cstdlib>
#include<iostream>
#include<sys/wait.h>
using namespace std;
int main(int argc,char * argv[]){
    pid_t p,q;
    int n=5,i;//默认创建5个进程
    cout<<"loop fork test"<<endl;
    if(argc==2){
        n=atoi(argv[1]);
    }
    for(i=0;i<n;i++){
        p=fork();
        if(p==0){
            break; //如果是子进程,则退出子进程逻辑
        }else if(i==3){
            q=p; //保留子进程的pid
        }
    }
    if(n==i){
        sleep(n);    
        wait(NULL);//阻塞地终结一个进程
        while(1);
        cout<<"我是父进程"<<endl;

    }else{
        sleep(i);  
        cout<<"我是子进程"<<endl;
        cout<<"getpid(): "<<getpid()<<endl;
        cout<<"getppid(): "<<getppid()<<endl;
        //子进程退出,
    }

    return 0;
}

使用waitpid(pid,NULL,0)阻塞的删除一个进程?

#include<unistd.h>
#include<cstdlib>
#include<iostream>
#include<sys/wait.h>
using namespace std;
int main(int argc,char * argv[]){
    pid_t p,q;
    int n=5,i;//默认创建5个进程
    cout<<"loop fork test"<<endl;
    if(argc==2){
        n=atoi(argv[1]);
    }
    for(i=0;i<n;i++){
        p=fork();
        if(p==0){
            break; //如果是子进程,则退出子进程逻辑
        }else if(i==3){
            q=p; //保留子进程的pid
        }
    }
    if(n==i){
        sleep(n);    
        //wait(NULL);//阻塞地终结一个进程
        waitpid(q,NULL,0);
        while(1);
        cout<<"我是父进程"<<endl;
    }else{
        sleep(i);  
        cout<<"我是子进程"<<endl;
        cout<<"getpid(): "<<getpid()<<endl;
        cout<<"getppid(): "<<getppid()<<endl;
        //子进程退出,
    }

    return 0;
}

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:59:21  更:2021-11-19 18:00:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:40:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码