问题标签 [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 回答
1101 浏览

c - 使用 execv 在 C 中拥有自己的 shell

我正在尝试在 C 中构建自己的 shell 作为类项目的一部分。我们需要使用 execv 并实现我们自己的路径。为了更好地理解这里是一个问题:

默认情况下,路径列表为空,但可以增长到任意大小。您应该实现一个内置命令来控制此变量:

  • path(不带参数)显示列表中的所有条目,用冒号分隔,例如“/bin:/usr/bin”。

  • path + /some/dir将给定的路径名​​附加到路径列表。

  • path - /some/dir从路径列表中删除给定的路径名​​。

到目前为止,我误读了作业并使用了 execvp。请你能阐明如何创建我自己的路径变量,并为每个执行的命令搜索它所在的目录并将其添加到路径中吗?或者是否有任何使用 execv 编写的简单 shell 我可以看看?

我看到了http://linuxgazette.net/111/ramankutty.html,但我发现搜索有点太复杂了,他使用 execve。

到目前为止,我有最初为空的 char *mypath 变量。但用户可以使用 path + some/dir 或 path - /some/dir 添加或删除。execv 的语法是 execv("/some/dir", argv) 我如何在我的路径中搜索可执行文件并将其传递给 execv....例如 mypath=/bin/ls ;当我通过 execv(mypath, argv) 它不起作用...那么我如何将路径传递给 execv?

0 投票
2 回答
3986 浏览

c - 我的 execv() 函数在 linux ubuntu 中不起作用

我写了以下代码,但我总是得到输出:“错误!” (未计划返回的 execv 函数)

我究竟做错了什么???

0 投票
1 回答
2236 浏览

c - 如何在 linux 中使用 execv() 和 cd 命令?

cd 命令文件路径在哪里,在哪个环境变量中?!我使用PATH环境变量,但我没有在其中找到cd命令,所以我想在execv中执行cd命令,提前谢谢你,我的代码:

0 投票
1 回答
118 浏览

c - 指针丢失其值 + execv 编译警告

我希望我没有错过类似的问题。

我正在尝试使用原始 C 函数编写自己的迷你 shell。

我得到了一些应该可以工作的东西,但是我有一个指针可以让所有东西都出错。

我的adrCmd指针应该从函数中获取命令路径字符串并在searchCmd()函数中保持相同的值main

事实上:它指向 上的正确值searchCmd(),但不在main().

这是代码:

这是执行返回的内容:

当我在这里时,当我编译时,会execv返回一个警告:

我应该怎么做才能避免这种情况?

0 投票
2 回答
428 浏览

c - 将“uname”传递给 execv() 时出现“未知命令”错误

因此,我必须在 C 中构建一个程序,该程序实际上从键盘获取命令,将其拆分为存储在数组中的标记,并将这些标记用作“execv”(ubuntu 中的命令)的输入,我选择了命令“uname ” 带有参数“-a”,但由于某种原因,它一直说“Comanda necunoscuta!” (未知命令!)这是我的代码:

0 投票
2 回答
1671 浏览

c - 从二维数组参数运行 execvp

我正在尝试使用 char[][] 类型(又名字符串数组)中的数据运行 execvp。现在我知道 execvp() 将指向字符串的指针作为其第一个参数,然后将指向字符串数组的指针作为其第二个参数-实际上我之前什至已经成功使用过它-但是我似乎无法获得正确的指针组合&字符串让它在下面解决 - 我尝试的任何东西都被认为是不兼容的!

非常感谢任何帮助:) - 我已经删除了我的标题以压缩代码!

0 投票
1 回答
351 浏览

c - 无法使用 execv() 执行程序

我的代码是:

输出是:

但什么也没有发生(虽然它应该弹出一个图表)。

我正在将输出复制粘贴,没有“Ready”到终端,在我刚刚执行我的程序的同一个地方,它可以工作。所以我不确定这是一个路径问题。

我错过了什么?

0 投票
1 回答
1953 浏览

c++ - 如何在 C++ 程序中捕获 strace 的输出

我想在我的 C++ 程序中分析 strace 的输出。从我的应用程序启动/bin/strace ps时,我从 ps 获得输出,但不是从 strace 获得输出,并且 strace 输出被打印到 stdout(我的终端)。我使用使用管道和重定向流的标准技术。

这是我的来源:

如何在我的程序中获得 strace 的输出?

0 投票
0 回答
92 浏览

execv - execv(parent_process) execv 何时完成?

在程序中调用 execv(parent_process) 并且 parent_process 执行 fork 并退出。execv() 执行何时完成。是在子进程完成后还是在父进程完成后立即发生。

在我的程序中,它在 parent_process 完成后立即退出。

0 投票
1 回答
2769 浏览

c - 如何使用 execv 通过 sudo 运行程序?

在问这个问题之前,我阅读了很多帖子,不幸的是,他们都没有为我的问题提供所需的解决方案。我正在用 gnu c 编写一个 mpi 程序,并尝试在前一个子进程中执行 hping3。实际状态是,我可以生成一个孩子,也许执行 hping3 命令,但孩子的管道输出给我以下错误消息,可能来自 hping3:

我做了以下事情:首先我创建了大量的字符数组来填充我的参数。为什么是数组?我想在运行时更改端口和 ip(迭代循环)

参数更改如下所示:

最后是叉子。

感谢您的帮助,我有点陷入这个问题,现在已经解决了 12 个小时。