exec族函数:
理论知识在这:(4条消息) exec函数详解_amoscykl的博客-CSDN博客_exec函数
我们先编写一个以前的函数,我们将其编译为
gcc demo3.c -o 1
生成一个1文件
#include <stdio.h>
int main(int argc,char *argv[])
{
int i =0;
for(i =0;i<argc;i++)
{
printf("argv[%d]: %s\n",i,argv[i]);
}
return 0;
}
这个函数就是会收集我们指令的函数,之前学习过,那么我们现在开始运用一下exec函数族:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
printf("before execl\n");
if(execl("./echoarg","echoarg","abc",NULL)==-1) //当前路径下执行打开./echoarg,下两个是命令
{
printf("execl failed!\n"); //失败执行if中的
perror("why"); //列出失败的原因
}
printf("after execl\n"); //上面执行失败则会执行这条
return 0;
}
先来看失败情况:
失败了,失败的原因在why中:没有此文件,因为我们把demo3的输出文件改为了1
那么我们看看成功的:
成功则会运行echoarg,输入echoarg和abc两个命令并显示出来!
那么可以看得出来我们可以调用文件执行命令
查看系统的时间用date命令,系统时间也储存在一个文件中我们使用命令
whereis date
查看date文件的绝对路径并写程序:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
printf("this pro get system date\n");
if(execl("/bin/date","date",NULL,NULL)==-1)
{
printf("execl failed!\n");
perror("why");
}
printf("after execl\n");
return 0;
}
结果如下:
完成!