问题标签 [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.
c++ - Unix中的C ++ Shell,execv:从函数中动态创建并返回可用的第二个参数
在我到处寻找这个问题的答案的地方,我看到人们制作了一个大小为 2 的小 char * 数组,并在 execv 的路径中进行了硬编码。我需要做的是将带有路径的参数字符串作为第一组字符,将它们标记化,然后将它们放入 execv 将接受的 char *s 数组中。
这是我的标记化功能
这被称为
在我的 fork() if-else 语句的 Child 部分中进行流控制。我收到一个 bad_alloc 错误,但我不确定我的哪些分配语句是正确的,如果有的话。我知道退货必须是表格
但我不确定如何设置。
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 功能选项,以及它是否是一个可行的选项。
有人可以指导我走哪条路以及该怎么做吗?谢谢
c - 用子进程中的文件执行
我在同一个目录 main 和 example 中有两个程序,如果我执行./example file.txt
它,它会使用该文件管理简单的任务。然后我的主要程序是
所以我想执行./main file.txt
并且子进程应该./example file.txt
使用与 main 在 argv[1] 中收到的相同文件执行。我的问题是如何使用 execv 参数来完成这个。
对不起,如果我没有简单地解释自己。谢谢你
c - 制作自己的外壳
正如你所知道的,这是家庭作业。这将在 C 中实现。
首先,我创建了一些打印 shell ex 的函数
之后,我继续用“|”标记输入行 作为分隔符,所以我得到稍后将通过管道传输的命令。
所以现在,我必须创建一个 char *const 数组,这是我不知道该怎么做的事情之一,因为所有变量都必须事先声明,因为它是 const,不是吗?
你能提供一些关于如何从现在开始进行的提示吗?
c - 使用 execv() 时没有这样的文件或目录
我正在尝试编写一个基本的 shell,它可以用 c 语言解释简单的命令,如日期、ls。
我首先获取这样的 PATH 变量,然后将其传递给 execv() 函数。
我打印出这个值,我得到了这个:
请注意,我正在使用virutalbox 来运行Ubuntu。这是我用来尝试简单 ls 命令的代码。在下面的代码中,变量行是用户编写的实际命令,在我们的例子中是“ls”
我得到的结果是这样的:
有任何想法吗?
c - execv 的参数会发生什么变化?
对于这点 C 魔法,我总是有点模糊。当您调用 execv 时,您正在“替换进程映像”。这到底是什么意思呢?只是 DATA 段?一切都分配给进程?堆栈?堆?
我的问题是您传递给 execv 的参数所使用的存储会发生什么变化?如果它们是调用 execv 的函数的局部变量,那么它们就在堆栈上。但是如果你替换进程映像,并调用新进程的 main() 函数,当 main() 返回时会发生不好的事情,因为从主调用指向返回位置的堆栈信息被新进程映像替换。变量也一样,是吗?如果这些变量是在堆上分配的呢?
探究的头脑正在询问任何知道的人。
c - 系统命令作为 C 中的变量
我想将which
命令作为execv
. 例如,用户键入“firefox”作为输入。它将显示带有which firefox
命令的文件路径,我想在execv
. 这是我的尝试:
c - 如何在 C 中执行命令并读取其输出
我想使用 which 命令查找路径名,如下所示:
然后我将输出用作execv()
函数的参数。我怎样才能做到这一点?有什么建议吗?
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
:
提前致谢!
stack - 在 execve 中使用环境变量进行 C 漏洞利用
在 C 编程语言中,对于 execve:
我们如何使用 envp 进行漏洞利用?
其次,当通过 envp 传递值时,我们需要用 NULL 终止它吗?
最后,envp 放在堆栈的什么位置?
提前致谢!