Linux系统函数execve说明(01)---函数参数说明

环境:Vmware Workstation;CentOS-6.4-x86_64

说明:

1、execve是Linux的系统函数,查询的时候使用man 2 execve

2、execve在头文件unistd.h中。

3、execve的定义形式:int execve(const char *filename, char *const argv[], char *const envp[]);

4、参数说明:

const char *filename:执行文件的完整路径。

char *const argv[]:传递给程序的完整参数列表,包括argv[0],它一般是程序的名。

char *const envp[]:一般传递NULL,表示可变参数的结尾。

下面的程序是通过execve函数,执行ls命令:

1、编写源文件main.c:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *args[])
{
	// 定义一个字符数组,保存程序的参数信息
	// 数组的第一个元素是程序的名称
	char *buf[] = { "/bin/ls", "-l", NULL };
	// 调用execve函数执行程序
	// 第一个参数是程序的完整路径,第二个参数是字符数组,第三个参数是NULL
	execve("/bin/ls", buf, NULL);
	return 0;
}
2、编写makefile文件:

.SUFFIXES:.c .o

CC=gcc

SRCS=main.c
OBJS=$(SRCS:.c=.o)
EXEC=main

start: $(OBJS)
	$(CC) -o $(EXEC) $(OBJS)
	@echo "-----------------------------OK-----------------------"

.c.o:
	$(CC) -Wall -o $@ -c $<

clean:
	rm -rf $(EXEC) $(OBJS)

3、编译并执行程序:

[negivup@negivup mycode]$ make
gcc -Wall -o main.o -c main.c
gcc -o main main.o
-----------------------------OK-----------------------
[negivup@negivup mycode]$ main
total 20
-rwxrwxr-x. 1 negivup negivup 6514 Sep 21 09:43 main
-rw-rw-r--. 1 negivup negivup  332 Sep 21 09:41 main.c
-rw-rw-r--. 1 negivup negivup 1592 Sep 21 09:43 main.o
-rw-rw-r--. 1 negivup negivup  235 Sep 20 08:18 makefile
通过execve函数成功执行了命令:ls -l


PS:根据传智播客视频学习整理得出。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值