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的结果图
感谢阅读,希望能帮助到大家,谢谢大家对对本知道支持!
相关推荐
-
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输出结果如图. 但是
随机推荐
- mysql中索引使用不当速度比没加索引还慢的测试
- Vue非父子组件通信详解
- 从零开始学JAVA之可变参数
- 基于asp.net下使用jquery实现ajax的解决方法
- PHP水印类,支持添加图片、文字、填充颜色区域的实现
- SQL SERVER 9003错误解决方法
- Android 常见的四种对话框实例讲解
- php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
- gridview行索引获取方法及实现代码
- 帝国cms目录结构分享
- php文件夹的创建与删除方法
- jQuery Tags Input Plugin(添加/删除标签插件)详解
- 最强的Windows XP系统启动提速技巧
- PHP与以太坊交互详解
- mysql 5.7.24 安装配置方法图文教程
- 基于ORA-19815闪回空间爆满问题的处理方法
- 如何能分清npm cnpm npx nvm
- python实现udp传输图片功能
- Golang Cron 定时任务的实现示例
- 基于PyQT实现区分左键双击和单击