system与excel族函数区别

1.system

cpp 复制代码
#include<stdlib.h>
int system(const char *command);

comand是命令的路径,一般我们用绝对路径

system函数会创建新的进程,新的进程执行完返回原来的进程,原来的进程则继续执行后面的代码段。

如我们创建一个sys.cpp文件,在其中去执行另一个sys1可执行文件

cpp 复制代码
#include<iostream>
#include<unistd.h>
#include<stdlib.h>
int main()
{
    std::cout<<"sys excute"<<getpid()<<std::endl;
    system("./sys1");
    std::cout<<"sys success"<<std::endl;
    return 0;
}

同目录下创建一个sys1.cpp文件,然后将其编译链接为可执行文件

cpp 复制代码
#include<iostream>
#include<unistd.h>
int main()
{
    std::cout<<"sys1 excute"<<getpid()<<std::endl;
    std::cout<<"sys1 termined"<<std::endl;
    return 0;
}

可以看出先执行完sys1后又返回原来的进程执行了

2.execl

cpp 复制代码
#include <unistd.h>
 
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg,..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[],char *const envp[]);

一般来说,path为指令的路径,arg为指令的参数

excel不创建新的进程,只是从原来进程去执行别的任务,执行完不会返回。

cpp 复制代码
#include<iostream>
#include<unistd.h>
#include<stdlib.h>
int main()
{
    std::cout<<"sys excute"<<getpid()<<std::endl;
    execl("./sys1","sys1",0);
    std::cout<<"sys success"<<std::endl;
    return 0;
}

可以看到执行完sys1,就结束了

相关推荐
神奇夜光杯7 分钟前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
筱源源8 分钟前
Kafka-linux环境部署
linux·kafka
Themberfue9 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧11 分钟前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
测试界的酸菜鱼22 分钟前
Python 大数据展示屏实例
大数据·开发语言·python
晨曦_子画31 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
Black_Friend40 分钟前
关于在VS中使用Qt不同版本报错的问题
开发语言·qt
算法与编程之美1 小时前
文件的写入与读取
linux·运维·服务器
希言JY1 小时前
C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
c语言·开发语言
残月只会敲键盘1 小时前
php代码审计--常见函数整理
开发语言·php