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

linux - Linux中不同可执行文件之间的共享变量

我想要做的是创建一个全局共享变量以供不同进程访问。我希望将子进程替换为现有的可执行文件。

更新:我认为这是解决方案。代码是从这里借来的。但是由于每个进程都需要至少一个 I/O 操作来映射文件,有没有更快的方法呢?

我的代码.h

应用程序1.cc

包括

我的代码.cc

任何帮助表示赞赏。

0 投票
1 回答
377 浏览

c - 为自己的终端执行

我目前正在用 C 编写自己的终端。我发现,我可以使用 exec() 方法的多种变体。它的简单出现导致我使用 execv():

据我了解,这应该有效。它正在编译,但没有任何反应。

0 投票
2 回答
1879 浏览

c - 即使命令可用,Execv 也会失败

我试图在手动搜索后调用 execv 以执行程序。

在我的例子中, c 是一个结构体,它的 args 是一个字符串数组,在接收输入时传递了参数。nargs 是参数的数量。c->args[0] 将包含 "ls","cat" 等。

我尝试在我的子进程中打印 args[0]、fullPath 等的值。它们都显示诸如“/bin/ls”、“/bin/cat”等值。但是当我调用 execv 时,它返回 -1,errno 为 2,我理解这是“没有这样的文件或目录”的错误. 但我确定该文件在那里,因为这就是我的 PathResolver 在检查所有权限后返回的内容。谁能指出我可能犯了错误的地方。

//发生在child内部的部分

路径解析器功能

}

0 投票
2 回答
1036 浏览

c - 使用 C 数组,传递给 execv()

我有一个功能:

但是,我得到warning: passing argument 2 of ‘execv’ from incompatible pointer type

如果 execv 期望char* const argv[]它的第二个参数,为什么我会收到这个警告?

char arguments[][]由于数组本质上与指向数组开头的指针相同,因此和之间的关键区别是什么char* const argv[]

0 投票
2 回答
240 浏览

c - 将一个命令 (execv) 的输出发送到另一个

例如,如果我想做相当于 ls | grep 测试,父线程将运行 grep 侦听 STDIN 上的输入,子线程将 ls 的输出写入 STDTOUT。

0 投票
1 回答
2809 浏览

c - 如何知道在后台运行的进程是否完成

我用 C 编写了一个基本 shell 来执行 ls 、 pwd 等基本命令
...包含现在在后台运行的进程的列表)
整件事是我想知道一个进程何时完成,所以我可以将它从列表中删除。
谢谢

0 投票
1 回答
174 浏览

linux - execv 后,管道缓冲区中的内容消失

有两个进程,父进程和子进程父进程stdin中有一些数据。内容是:

父进程代码:

子进程代码:

为什么?子进程是否可以读取标准输入中的第三行?

0 投票
2 回答
3127 浏览

c - 如何防止 execv 杀死我的程序?

我的任务是编写一个简单的 linux shell。我正在使用外部命令。我们需要使用 execv。

现在我只用 ls 测试它。ls 运行完全正常,但程序在 execv 成功后立即关闭。有什么办法让我继续使用 execv 来检查正确的路径并让程序在 execv 成功后继续运行?

0 投票
1 回答
1207 浏览

c - dup2() 正在阻止输出

我的代码粘贴在下面。

我正在尝试使用 dup2 将我的输出重定向到文件。

如果我用它来重定向它工作正常(如果我删除评论),输出文件而不是标准输出。例如: ls > test ,导致 ls 输出到测试。

问题是没有 > 的 ls 不会输出任何东西。如果我按原样保留评论 ls 输出,尽管无法重定向。

redirect[0] 是 < 或 > 或什么都没有 redirect[1] 是要重定向到的文件的路径

command is 是一个 cstrings 数组,其中包含命令 commands 的图片

带有注释代码的示例输出

代码未注释

0 投票
3 回答
847 浏览

c - 如果我 fork() 然后执行 execv(),谁拥有控制台?

我正在编写一个 Linux 应用程序。如果我调用fork()然后运行一个接受控制台输入的应用程序会发生什么?考虑下面的代码:

问题是,my_other_app还有一个按 ENTER 键来停止消息。那么当我getchar()打电话时,哪个应用程序正在读取它?主应用程序还是my_other_app我启动的应用程序execv

编辑:它通过测试my_other_app优先于控制台出现。每次都会出现这种情况吗?有没有办法确保控制台由主进程拥有?