多进程中fork

2023-11-19

linux下多进程 (fork)

这里只是简单实用fork, 大家想了解具体 欢迎到我的gitee
给个star

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main() {
    int pid;
    printf("before fork()...");
    fflush(stdout);
    if((pid = fork()) < 0) { // fork对输出缓冲区进行复制
        perror("fork");
    }
    if(pid == 0) {
        printf("In Child\n");
    } else {
        sleep(1);
        printf("In father\n");
    }
    printf("END FORK!\n");
    return 0;
}


#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

int main() {
    int pid, x = 0;
    for(int i = 1; i <= 3; i++) {
        if((pid = fork()) < 0) {
            perror("fork()");
            continue;
        }
        if(pid == 0) {
            x = i;
        }
    }
    printf("I/m %dth child.\n", x);
    sleep(60);
   // printf("father%d\n", x);
    return 0;
}

exec
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<sys/wait.h>
int main(int argc, char **argv) {
    pid_t pid;
    char filename[512] = {0};
    char o_name[512] = {0};
    char f_type[256] = {0};
    char cmd[512] = {0};
    if(argc < 2) {
        fprintf(stderr, "Usage: %s filename arg...\n", argv[0]);
        return 1;
    }

    strcpy(filename, argv[1]);
    //a.c b.cpp
    char *sub;

    sub = strrchr(filename, '.');
    strncpy(o_name, filename, sub - filename);
    strcpy(f_type, sub);

    if(!strcmp(f_type, ".c")) {
        strcpy(cmd, "gcc");
    } else if(!strcmp(f_type, ".cpp")) {
        strcpy(cmd, "g++");
    } else {
        fprintf(stderr, "Not support File Type\n");
        return 2;
    }

    if((pid = fork()) < 0) {
        perror("fork");
        return 3;
    } 
    if(pid == 0) {
        execlp("vim", "vim", filename, NULL);
    }
    wait(NULL);
    if((pid = fork()) < 0) {
        perror("fork");
        return 3;
    }
    if(pid == 0) {
        execlp(cmd, cmd, filename, "-o", o_name, NULL);
    }
    int status; //子进程状态
    wait(&status);
    if(status == 0) {
        printf("OK\n");
        char name[25] = "./";
        strcat(name, o_name);
        execlp(name,name,NULL, NULL);
    } 
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多进程中fork 的相关文章

  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 在centos中安装sqlite3 dev和其他包

    我正在尝试使用 cpanel 在 centos 机器上安装 sqlite dev 和其他库 以便能够编译应用程序 我对 debian 比 centos 更熟悉 我知道我需要的库是 libsqlite3 dev libkrb5 dev lib
  • tcpdump 是否受 iptables 过滤影响?

    如果我的开发机器有iptables规则到FORWARD一些数据包 这些数据包是否被 tcpdump 捕获 我有这个问题 因为我知道存在其他链称为INPUT如果数据包路由到 它会过滤发往应用程序的数据包FORWARD链 它会到达吗tcpdum
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • 在 Mono 上运行 .Net MVC5 应用程序

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • 从 Xlib 转换为 xcb

    我目前正在将我的一个应用程序从 Xlib 移植到 libxcb 但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦 libxcb 中有 XInput2 实现吗 如果是的话 在哪里可以找到文档 目前我在使用此功能时遇到问题
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 在生产服务器上使用 Subversion 使文件生效的最佳方法是什么?

    目前我已经设置了 subversion 这样当我在 Eclipse PDT 中进行更改时 我可以提交更改 它们将保存在 home administrator 中项目文件 该文件具有 subversion 推荐的 branches tags
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 使用os.execlp时,为什么`python`需要`python`作为argv[0]

    代码是这样的 os execlp python python child py other args this works os execlp python child py other args this doesn t work 我读过
  • 我什么时候应该编写 Linux 内核模块?

    有些人出于某种原因想要将 Linux 中的代码从用户空间移动到内核空间 很多时候 原因似乎是代码应该具有特别高的优先级 或者只是 内核空间更快 这对我来说似乎很奇怪 我什么时候应该考虑编写内核模块 有一套标准吗 我怎样才能激励将代码保存在
  • cdc_acm:无法设置 dtr/rts - 无法与 USB cdc 设备通信

    我试图使用 pic24fj128gb206 枚举 usb cdc 设备 设备似乎已正确枚举 但是当我将设备连接到 Linux PC 时 我从内核收到以下警告消息 cdc acm 1 8 1 6 7 1 0 failed to set dtr
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 为什么同一个curl命令在windows和linux下输出不同的东西?

    为什么同样的curl o file https www link com 命令输出不同的东西 例如 如果我运行命令curl o source txt https www youtube com playlist list PLIx6Fwnp
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读

随机推荐

  • ABB MPRC086444-005数字输入模块

    ABB MPRC086444 005 是一款数字输入模块 通常用于工业自动化和控制系统中 用于接收和处理数字信号 以下是这种类型的数字输入模块通常可能具备的一般功能和特点 数字输入接口 MPRC086444 005 模块通常配备多个数字输入
  • AttGAN从paper到code理解

    AttGAN Facial Attribute Editing by Only Changing What You Want 2017 CVPR 文章简介 本文研究面部属性编辑任务 其目的是通过操作单个或多个感兴趣的属性 如头发颜色 表情
  • RabbitMQ的安装和启动——windows版

    本章介绍如何在win10下安装 RabbitMQ 并启动 安装 Erlang 安装 RabbitMQ 启动 RabbitMQ 百度网盘下载 Erlang 和 RabbitMQ Erlang 网盘链接 RabbitMQ 网盘链接 结语 下载R
  • 搜索研发工程师需要掌握的一些技能

    文章目录 基础 语言 数据结构与算法 工程方面 搜索相关 搜索主要模块 电商搜索流程 分词相关 搜索召回 相似度算法 相关词推荐 排序相关 国美搜索 搜索算法工程师需要掌握的技能 基础 语言 大部分公司用的是Solr ElasticSear
  • 算法相关-经典排序算法(python实现)

    概述 插入排序 将未排序的元素同已排序的元素从后往前比较 带排序元素 a 被比较元素 b 如果a
  • 在Linux是使用libxml2---从安装到使用

    一 下载和安装LIBXML2 方法一 Libxml2是个C语言的XML程式库 能简单方便的提供对XML文件的各种操作 并且支持XPATH查询 及部分的支持XSLT转换等功能 Libxml2的下载地址是 http xmlsoft org 完全
  • 支撑区块链大规模商用,FISCO BCOS v3.0的那些“黑科技”

    注 文章转载自CSDN公众号 在2021年度金链盟生态大会上 全新的FISCO BCOS v3 0正式发布 该版本从架构 算法以及安全可控和隐私计算协同等方向进行了全面升级 满足数字经济时代对区块链系统可承载更大规模 更多场景 更广泛参与的
  • spring-xxx-xxx-0.0.1-SNAPSHOT.jar中没有主清单属性完美解决

    这种情况就是因为没有在SpringBoot中pom文件安装maven plugin 导致出现没有主清单属性问题 1 引入插件
  • JPush极光推送Unity插件iOS设备无法获取DeviceToken

    前言 最近在使用JPush进行极光推送 Unity插件GitHub地址https github com jpush jpush unity3d plugin 问题描述 但是发现了一个问题 按照官方文档操作 最终仍然无法获取DeviceTok
  • Error: unable to connect to node rabbit@localhost: nodedown

    刚安装上rabbimq 当我使用rabbitmqctl start app 启动rabbitmq的时候 出现了如下问题Error unable to connect to node rabbit localhost nodedown 然后我
  • vue-quill-editor复制粘贴问题

    需求是这样的 富文本可以具备粘贴文本的功能 但是不能粘贴图片到编辑框中 于是百度一下很快就有了解决方案 在data的文本编辑框配置中添加一个clipboard粘贴板 对其进行配置 方法中可以自觉将粘贴的图片转换为空的字符串 所以巧妙实现了此
  • 解决ubuntu打不开软件更新器和软件中心的问题

    打不开可能是软件源的问题 试试 sudo gedit etc apt sources list 然后把第三方软件源全部删除掉 重启软件更新器 如果能够启动 但有提示请检查网络连接的信息 那么点设置 在其它软件选项卡看情况取消勾选一些软件源
  • 解决报错:无法使用 JSX,除非提供了 “--jsx“ 标志。ts(17004)

    在 vue cli 5 0 6下创建项目 打开代码突然出现 无法使用 JSX 除非提供了 jsx 标志 之前都没问题 今天打开一看就报错了 网上说是 typescript的本地版本和你当前项目的版本不一致 请将本地的ts版本更新至项目需要的
  • 【BrokenPipeError: [Errno 32] Broken pipe】的解决方案

    BrokenPipeError Errno 32 Broken pipe 的解决方案 项目场景 问题描述 原因分析 解决方案 End 项目场景 调试 GitHub项目bddoia project Explainable Object ind
  • Docker一运行容器就退出:已解决

    Docker一运行容器就退出 已解决 文章目录 Docker一运行容器就退出 已解决 问题引入 解决方法 问题引入 想着挂载一个数据卷人挪活设置个端口号在外部访问一下 结果刚刚运行就停止了 如下图所示 就算是给它加上做一个死循环 持续输出
  • 函数防抖知识要点

    函数防抖 debounce JavaScript 中的函数大多数情况下都是由用户主动调用触发的 比如说点击 拖拽 改变浏览器尺寸 提交表单等 除非是函数本身的实现不合理 否则一般不会遇到跟性能相关的问题 但是在一些少数情况下 函数的触发不是
  • Ubuntu14.04终端配置:颜色、大小写不敏感、上键搜索字符串开头的历史命令、右键显示打开终端_ubuntu一站式配置教程(三)

    Ubuntu14 04终端配置 颜色 大小写不敏感 上键搜索字符串开头的历史命令 右键显示打开终端 ubuntu一站式配置教程 三 16单独列出来 文章目录 Ubuntu14 04终端配置 颜色 大小写不敏感 上键搜索字符串开头的历史命令
  • 判断是否是视频还是图片

    当发请求后拿到数据需要对数据进行处理 判断是视频就显示视频 图片显示图片
  • 3D游戏编程与设计作业4——使用skybox构建游戏场景

    步骤1 首先下载支持使用Fantacy Skybox FREE 的Unity版本 2021 3 步骤2 打开unity store 搜索Fantacy Skybox FREE 并进行下载 步骤3 下载成功后import对应的包到项目中 步骤
  • 多进程中fork

    linux下多进程 fork 这里只是简单实用fork 大家想了解具体 欢迎到我的gitee 给个star include