努力学习Day25【Linux进程部分】

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;
}

结果如下: 

 完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值