Linux 进程替换(exec函数)实现代码

Linux 进程替换(exec函数)实现代码

  # include<stdio.h>
  #include<stdlib.h>
  #include<unistd.h>
  #include<fcntl.h>
  #include<sys/types.h>
  #include<sys/stat.h>
  #include<string.h>
  int main()
   {
    pid_t id=fork();
  if(id==0)
   {
   printf("child is running\n");
   sleep(1);
  char* env[]={"MYENV=/A/B/C/D/AAAA",NULL};
  char* argv[]={"ls","-l","-n","-i",NULL};
 // execl("/bin/ls","ls","-l","-n","-i",NULL);
  // execlp("ls","ls","-l","-n","-i",NULL);
 //  execv("/bin/ls",argv);
  // execvp("ls",argv);

   // execle("./myenv","myenv",NULL,env);
      execve("./myenv",argv,env);
      printf("child id done\n");  //exec成功的话不执行此语句
      exit(1);
    }
    else
    {
       pid_t ret=waitpid(id, NULL,0);
      if(ret>0)
       {
        printf("father wait success\n"); }
         else{
          printf("child quit not normal\n");

       }   }   return 0;                                              }

下图就是execl execlp execv execvp的结果图

下图是execle execve的结果图

感谢阅读,希望能帮助到大家,谢谢大家对对本知道支持!

(0)

相关推荐

  • linux find命令之exec简单概述

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠. {} 花括号代表前面find查找出来的文件名. 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的.在有些操作系统中只允许-exec选

  • python实现linux服务器批量修改密码并生成execl

    批量修改linux服务器密码,同时生成execl表格 复制代码 代码如下: #!/usr/bin/env python#coding:utf8#随机生成自定义长度密码from random import choiceimport string,pickle def GenPassword(length=8,chars=string.ascii_letters+string.digits):    return ''.join([choice(chars) for i in range(lengt

  • Linux 进程替换(exec函数)实现代码

    Linux 进程替换(exec函数)实现代码 # include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<fcntl.h> #include<sys/types.h> #include<sys/stat.h> #include<string.h> int main() { pid_t id=fork(); if(id==0) { printf(&quo

  • 深入解读Linux进程函数fork(),vfork(),execX()

    本文研究的主要是Linux进程函数fork(),vfork(),execX()的相关内容,具体介绍如下. 函数fork() fork函数:创建一个新进程 1.fork()成功后,将为子进程申请PCB和用户内存空间. 2.子进程会复制父进程用户空间的所有数据(代码段.数据段.BSS.堆.栈),文件描述符. 3.复制父亲进程PCB中绝大多数信息. 4.虽然子进程复制了文件描述符,而对于文件描述符相关的文件表项(struct file结构),则采用共享的方式. 一个实例: #include <unis

  • Linux多线程环境下 关于进程线程终止函数总结

    pthread_kill: pthread_kill与kill有区别,是向线程发送signal.,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数. int pthread_kill(pthread_t thread, int sig); 向指定ID的线程发送sig信号,如果线程代码内不做处理,则按照信号默认的行为影响整个进程,也就是说,如果你给一个线程发送了SIGQUIT,但线程却没有实现signal处理函数,则整个进程退出. pthread

  • PHP执行linux命令6个函数代码实例

    一般情况下,很少会用php去执行linux命令,不过特殊情况下,你也许会用到这些函数.以前我知道有二个函数可以执行linux命令,一个是exec,一个是shell_exec.其实有很多的,结合手册内容,介绍以下6个函数. 1,exec函数 <?php $test = "ls /tmp/test"; //ls是linux下的查目录,文件的命令 exec($test,$array); //执行命令 print_r($array); ?> 返回结果如下: [root@krlcgc

  • 一行代码教你如何隐藏Linux进程

    总有朋友问隐藏Linux进程的方法,我说你想隐藏到什么程度,是大隐于内核,还是小隐于用户. 网上通篇论述的无外乎hook掉procfs或者类似的用户态方案,也都难免长篇大论,我说,这些场面都太大了,太复杂了.对于希望马上看到效果的而言,看到这么一堆复杂的东西,大概率望而却步. 本文介绍一种将Linux进程小隐于用户的非常规方法,仅仅一行代码: 修改掉进程的pid即可. 注意是小隐,所以,不值得反制,逗一下高级会议工程师搞个恶作剧玩玩得了. target->pid = 0x7fffffff; 完整

  • Linux进程控制详解及实例

    Linux进程控制详解及实例 常用函数: fork() 通过复制调用进程来建立新的进程,是最基本的进程建立操作. exec   包括一系列的系统调用,其中每个系统调用都完成相同的功能,即通过用一个新的程序覆盖原内存空间,来实现进程的转变.各种exec系统调用之间的区别仅在于它们的参数构造不同. wait() 它提供了初级的进程同步措施,能使一个进程等待,直到另一个进程结束为止. exit()  常用来终止一个进程的运行. 进程的建立 如果fork()调用成功,就会使内核建立一个新的进程,所建的新

  • PHP中exec函数和shell_exec函数的区别

    这两个函数都是执行Linux命令函数,不同的是获取返回结果不一样,exec只能获取最后一行数据,shell_execu则可以获取全部数据. 假如脚本路径下有如下文件: 复制代码 代码如下: -bash-4.1# ll 总用量 12 -rw-rw-r--. 1 www web 133  7月 16 15:00 a.php -rw-r--r--. 1 lee web  59  2月 29 17:05 b.php -rw-r--r--. 1 lee web  81  3月  8 17:00 c.php

  • Linux模拟实现sleep函数

    先来说说工作原理,linux中的sleep函数能够让程序休眠一定的秒数,到时间后自动恢复运行. 实现思路 设定睡眠的秒数 睡眠(挂起) 恢复运行 实现机制 设定睡眠的秒数:采用alarm()函数设定需要睡眠的秒数,到时间后闹钟会发送SIGALRM信号给当前进程.但SIGALRM信号的默认操作是杀死进程,所以我们需要对SIGALRM信号进行自定义处理. 睡眠:pause()函数会让当前进程挂起,直到收到信号才会出错返回. 示例程序代码:模拟实现sleep使当前进程每2秒打印"hello yingy

  • PHP执行linux系统命令的常用函数使用说明

    system函数 说明:执行外部程序并显示输出资料. 语法:string system(string command, int [return_var]); 返回值: 字符串 详细介绍: 本函数就像是 C 语中的函数 system(),用来执行指令,并输出结果.若是 return_var 参数存在,则执行 command 之后的状态会填入 return_var 中.同样值得注意的是若需要处理用户输入的资料,而又要防止用户耍花招破解系统,则可以使用 EscapeShellCmd().若 PHP 以

  • PHP中如何判断exec函数执行成功?

    前言 做一个代码发布的系统,需要用到PHP的exec函数来执行Linux下的命令和git,svn命令,如何判断PHP的exec函数是否执行成功呢? 解决方案 写个PHP文件来做实验: exec函数第一个参数是执行的命令,第二个参数是执行的结果,第三个参数是执行的状态. <?php exec('ls', $log, $status); print_r($log); print_r($status); echo PHP_EOL; 执行这个php文件: 这里$log,$status输出结果如图. 但是

随机推荐