在C语言编程中如何使用execvp或其他类型的exec函数执行cat命令

问题描述 投票:0回答:2

我有一个问题需要解决。我有一个字符串数组,例如:

argv[]={"cat","file1.txt","file2.txt"}
,然后我需要使用execvp来执行
execvp(argv[0],argv)
,但我觉得为什么它在我的程序中不起作用。我不确定我是否可以使用这样的 execvp() 函数,有人可以告诉我如何使用 execvp() 或其他类型的 exec() 函数在 UNIX 或 Linus 系统中运行 cat 命令(使用 C 编程)?

c unix exec execvp
2个回答
3
投票

数组必须以

0
结尾:

char *argv[] = {"cat", "file1.txt", "file2.txt", 0};

这就是

execvp
知道参数结尾在哪里的方式,因为 C 不会将数组的长度传递给函数。


0
投票

找一个例子。创造性思考。我相信你可以访问Linux。运行以下命令并查看 strace 中返回的第一行。

strace cat $file1, $file2

根据您认为合适的方式自定义您的示例。现在您应该看到第 1 行的结果为:

execve("/usr/bin/cat", ["cat", "file1.txt,", "file2.txt"], 0x7fff2c4e7a70 /* 56 vars */) = 0

注意这一行的结尾 = 0 这是因为您想将 env 设置为 null 以结束系统调用上的参数。

现在您可以在 nasm 中使用它并确保您的代码正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.