问题标签 [execv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
113 浏览

c++ - Unix中的C ++ Shell,execv:从函数中动态创建并返回可用的第二个参数

在我到处寻找这个问题的答案的地方,我看到人们制作了一个大小为 2 的小 char * 数组,并在 execv 的路径中进行了硬编码。我需要做的是将带有路径的参数字符串作为第一组字符,将它们标记化,然后将它们放入 execv 将接受的 char *s 数组中。

这是我的标记化功能

这被称为

在我的 fork() if-else 语句的 Child 部分中进行流控制。我收到一个 bad_alloc 错误,但我不确定我的哪些分配语句是正确的,如果有的话。我知道退货必须是表格

但我不确定如何设置。

0 投票
1 回答
449 浏览

java - 将 linux 功能分配给一个 java 进程

我运行了许多 java 进程,但我只想将 cap_net_raw linux 功能分配给一个 java 进程。目前,如果我执行此“setcap cap_net_raw=ep /usr/java/default/bin/java”,则此功能将分配给所有 java 进程。

在做了一些研究之后,我认为我将不得不编写 ac 包装程序并将上述功能赋予该程序,java 进程将在 execv 中继承。另一项研究表明,可以通过 systemd 分配能力。

我不确定如何使用 systemd 功能选项,以及它是否是一个可行的选项。

有人可以指导我走哪条路以及该怎么做吗?谢谢

0 投票
1 回答
456 浏览

c - 用子进程中的文件执行

我在同一个目录 main 和 example 中有两个程序,如果我执行./example file.txt它,它会使用该文件管理简单的任务。然后我的主要程序是

所以我想执行./main file.txt并且子进程应该./example file.txt使用与 main 在 argv[1] 中收到的相同文件执行。我的问题是如何使用 execv 参数来完成这个。
对不起,如果我没有简单地解释自己。谢谢你

0 投票
1 回答
126 浏览

c - 制作自己的外壳

正如你所知道的,这是家庭作业。这将在 C 中实现。

首先,我创建了一些打印 shell ex 的函数

之后,我继续用“|”标记输入行 作为分隔符,所以我得到稍后将通过管道传输的命令。

所以现在,我必须创建一个 char *const 数组,这是我知道该怎么做的事情之一,因为所有变量都必须事先声明,因为它是 const,不是吗?

你能提供一些关于如何从现在开始进行的提示吗?

0 投票
2 回答
12997 浏览

c - 使用 execv() 时没有这样的文件或目录

我正在尝试编写一个基本的 shell,它可以用 c 语言解释简单的命令,如日期、ls。

我首先获取这样的 PATH 变量,然后将其传递给 execv() 函数。

我打印出这个值,我得到了这个:

请注意,我正在使用virutalbox 来运行Ubuntu。这是我用来尝试简单 ls 命令的代码。在下面的代码中,变量行是用户编写的实际命令,在我们的例子中是“ls”

我得到的结果是这样的:

有任何想法吗?

0 投票
2 回答
707 浏览

c - execv 的参数会发生什么变化?

对于这点 C 魔法,我总是有点模糊。当您调用 execv 时,您正在“替换进程映像”。这到底是什么意思呢?只是 DATA 段?一切都分配给进程?堆栈?堆?

我的问题是您传递给 execv 的参数所使用的存储会发生什么变化?如果它们是调用 execv 的函数的局部变量,那么它们就在堆栈上。但是如果你替换进程映像,并调用新进程的 main() 函数,当 main() 返回时会发生不好的事情,因为从主调用指向返回位置的堆栈信息被新进程映像替换。变量也一样,是吗?如果这些变量是在堆上分配的呢?

探究的头脑正在询问任何知道的人。

0 投票
1 回答
65 浏览

c - 系统命令作为 C 中的变量

我想将which命令作为execv. 例如,用户键入“firefox”作为输入。它将显示带有which firefox命令的文件路径,我想在execv. 这是我的尝试:

0 投票
1 回答
58 浏览

c - 如何在 C 中执行命令并读取其输出

我想使用 which 命令查找路径名,如下所示:

然后我将输出用作execv()函数的参数。我怎样才能做到这一点?有什么建议吗?

0 投票
1 回答
1065 浏览

c - 在 execl() bash 后从标准输入读取返回 eio(输入/输出错误)

如果由 shell 执行,以下代码可以按预期运行。

但是,如果我将此程序设置为用户的 shell 并通过 ssh 进入主机以将该程序作为 shell 执行,read(0, &buf123, 1);则会返回 EIO(输入/输出错误):

但是如果execl(bash)改成非交互式 bashexecl(bash -c "id")或其他程序而不是 bash,read(0, &buf123, 1);就会成功。

所以要重现这个错误,需要满足两个条件:

谁能帮我弄清楚为什么以及如何避免这种情况?

结果如下strace

提前致谢!

0 投票
2 回答
2792 浏览

stack - 在 execve 中使用环境变量进行 C 漏洞利用

在 C 编程语言中,对于 execve:

我们如何使用 envp 进行漏洞利用?

其次,当通过 envp 传递值时,我们需要用 NULL 终止它吗?

最后,envp 放在堆栈的什么位置?

提前致谢!