问题标签 [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.
linux - Linux中不同可执行文件之间的共享变量
我想要做的是创建一个全局共享变量以供不同进程访问。我希望将子进程替换为现有的可执行文件。
更新:我认为这是解决方案。代码是从这里借来的。但是由于每个进程都需要至少一个 I/O 操作来映射文件,有没有更快的方法呢?
我的代码.h
应用程序1.cc
包括
我的代码.cc
任何帮助表示赞赏。
c - 为自己的终端执行
我目前正在用 C 编写自己的终端。我发现,我可以使用 exec() 方法的多种变体。它的简单出现导致我使用 execv():
据我了解,这应该有效。它正在编译,但没有任何反应。
c - 即使命令可用,Execv 也会失败
我试图在手动搜索后调用 execv 以执行程序。
在我的例子中, c 是一个结构体,它的 args 是一个字符串数组,在接收输入时传递了参数。nargs 是参数的数量。c->args[0] 将包含 "ls","cat" 等。
我尝试在我的子进程中打印 args[0]、fullPath 等的值。它们都显示诸如“/bin/ls”、“/bin/cat”等值。但是当我调用 execv 时,它返回 -1,errno 为 2,我理解这是“没有这样的文件或目录”的错误. 但我确定该文件在那里,因为这就是我的 PathResolver 在检查所有权限后返回的内容。谁能指出我可能犯了错误的地方。
//发生在child内部的部分
路径解析器功能
}
c - 使用 C 数组,传递给 execv()
我有一个功能:
但是,我得到warning: passing argument 2 of ‘execv’ from incompatible pointer type
如果 execv 期望char* const argv[]
它的第二个参数,为什么我会收到这个警告?
char arguments[][]
由于数组本质上与指向数组开头的指针相同,因此和之间的关键区别是什么char* const argv[]
?
c - 将一个命令 (execv) 的输出发送到另一个
例如,如果我想做相当于 ls | grep 测试,父线程将运行 grep 侦听 STDIN 上的输入,子线程将 ls 的输出写入 STDTOUT。
c - 如何知道在后台运行的进程是否完成
我用 C 编写了一个基本 shell 来执行 ls 、 pwd 等基本命令
...包含现在在后台运行的进程的列表)
整件事是我想知道一个进程何时完成,所以我可以将它从列表中删除。
谢谢
linux - execv 后,管道缓冲区中的内容消失
有两个进程,父进程和子进程父进程stdin中有一些数据。内容是:
父进程代码:
子进程代码:
为什么?子进程是否可以读取标准输入中的第三行?
c - 如何防止 execv 杀死我的程序?
我的任务是编写一个简单的 linux shell。我正在使用外部命令。我们需要使用 execv。
现在我只用 ls 测试它。ls 运行完全正常,但程序在 execv 成功后立即关闭。有什么办法让我继续使用 execv 来检查正确的路径并让程序在 execv 成功后继续运行?
c - dup2() 正在阻止输出
我的代码粘贴在下面。
我正在尝试使用 dup2 将我的输出重定向到文件。
如果我用它来重定向它工作正常(如果我删除评论),输出文件而不是标准输出。例如: ls > test ,导致 ls 输出到测试。
问题是没有 > 的 ls 不会输出任何东西。如果我按原样保留评论 ls 输出,尽管无法重定向。
redirect[0] 是 < 或 > 或什么都没有 redirect[1] 是要重定向到的文件的路径
command is 是一个 cstrings 数组,其中包含命令 commands 的图片
带有注释代码的示例输出
代码未注释
c - 如果我 fork() 然后执行 execv(),谁拥有控制台?
我正在编写一个 Linux 应用程序。如果我调用fork()
然后运行一个接受控制台输入的应用程序会发生什么?考虑下面的代码:
问题是,my_other_app
还有一个按 ENTER 键来停止消息。那么当我getchar()
打电话时,哪个应用程序正在读取它?主应用程序还是my_other_app
我启动的应用程序execv
?
编辑:它通过测试my_other_app
优先于控制台出现。每次都会出现这种情况吗?有没有办法确保控制台由主进程拥有?