我对 execl 的学习

简介:
[root@localhost test]# cat exem.c
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
        pid_t mpid;
        
        mpid=fork();
       
       if( mpid<0)
       {

       }
       else if (mpid==0) { //the child itself
           
                if(execl("/soft/test/gaochange.o","gaochange",NULL)<0)
                        perror("execl error!");
                
                for (;;)
                {
                   fprintf(stderr,"after execl call\n");
                   sleep(5);
                }

       }else{
                for (;;)
                {
                   sleep(1);
                }                  
       }
}
复制代码

被子进程调用起来的代码:

复制代码
[root@localhost test]# cat gaochange.c
#include <stdio.h>

int main(int argc, char *argv[])
{

   for (;;)
   {
     sleep(10);
     fprintf(stderr,"we are in gaochange\n");     
   }

   return 0;
}
[root@localhost test]# 
复制代码

运行的结果,是这样的:

复制代码
[root@localhost test]# gcc -o gaochange.o gaochange.c
[root@localhost test]# gcc -o exem.o exem.c
[root@localhost test]# ./exem.o
we are in gaochange
we are in gaochange
we are in gaochange
we are in gaochange
we are in gaochange
we are in gaochange
we are in gaochange
we are in gaochange
we are in gaochange
we are in gaochange
we are in gaochange
we are in gaochange
we are in gaochange
….


[root@localhost test]# ps -ef|grep exem
root      3173  2957  0 09:10 pts/2    00:00:00 ./exem.o
root      3176  2917  0 09:10 pts/1    00:00:00 grep exem
[root@localhost test]# ps -ef|grep 3173
root      3173  2957  0 09:10 pts/2    00:00:00 ./exem.o
root      3174  3173  0 09:10 pts/2    00:00:00 gaochange
root      3179  2917  0 09:10 pts/1    00:00:00 grep 3173
[root@localhost test]# 
复制代码
目录
相关文章
|
3月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
114 6
|
7月前
|
Shell Linux
|
7月前
|
C语言 Windows
C语言中的fopen与fclose函数详解
C语言中的fopen与fclose函数详解
375 1
|
7月前
|
C语言
C语言 -- CreateProcess创建进程
C语言 -- CreateProcess创建进程
79 4
|
7月前
|
存储 Unix C语言
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
153 0
|
监控 NoSQL C语言
研发中学习C(file函数、宏定义、gdb调试、strstr函数)
研发中学习C(file函数、宏定义、gdb调试、strstr函数)
140 0
|
程序员
【C库函数】strcpy函数详解
拷贝字符串到目标地址
【C库函数】strcpy函数详解
|
存储 Linux
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回。
301 0
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
|
物联网 Linux C语言
Execl 函数|学习笔记
快速学习 Execl 函数
Execl 函数|学习笔记