问题标签 [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 投票
4 回答
8775 浏览

c - 用 C 编写自己的 Unix shell - PATH 和 execv 的问题

我正在用 C 编写自己的 shell。它需要能够显示用户当前目录,根据完整路径执行命令(必须使用 execv),并允许用户使用 cd 更改目录。

这是作业。老师只给了我们关于 C 的基本入门知识和关于程序应该如何工作的非常简短的框​​架。由于我不是一个容易放弃的人,我已经研究了三天如何做到这一点,但现在我很难过。

这是我到目前为止所拥有的:

  • 显示用户的用户名、计算机名和当前目录(默认为主目录)。
  • 提示用户输入,并获取输入
  • 将用户的输入按“”拆分为参数数组
  • 通过“:”将环境变量 PATH 拆分为令牌数组

我不知道如何从这里开始。我知道我必须使用 execv 命令,但在我对谷歌的研究中,我还没有真正找到我理解的示例。例如,如果命令是 bin/ls,那么 execv 如何知道显示主目录中的所有文件/文件夹?如何告诉系统我更改了目录?

我一直在使用这个网站,这很有帮助: http: //linuxgazette.net/111/ramankutty.html但我又一次被难住了。

谢谢你的帮助。让我知道是否应该发布一些现有代码,但我不确定是否有必要。

0 投票
0 回答
680 浏览

c - execv() 命令挂在 C shell 中

我正在使用 C shell,当我运行/bin/ls它时,它会正确显示,但会挂起。我拥有的相关代码如下,我觉得它必须在父案例中缺少 wait() 语句?

0 投票
1 回答
3170 浏览

c - fork 和 execve 的问题

因此,对于课堂作业,我们正在制作自己的基本外壳。在其他功能中,它必须能够处理绝对路径并使用 fork() 和 execv 执行外部应用程序。

这个想法是程序派生一个子进程,调用 execv 替换所述子进程,并在外部执行完成时终止它。

不幸的是我错过了这门课,我尝试了几个我在网上找到的例子,但都没有奏效。问题是父进程复制 execv 命令并自行终止。现在我只是想让它执行“/bin/ls”并返回到shell的主循环。

这是有问题的代码。我想我错过了一些简单的东西。是的,这对教授来说是个好问题,但他不遵守周五的办公时间,我不想等待数小时或数天才能收到电子邮件回复。:P 同样,我知道我应该实施更好的错误检查。现在我将使用基本功能,稍后我将添加花里胡哨。

我已经确认以下所有变量都有其正确的值。问题是我如何只导致子进程在 execv 之后关闭并阻止父进程这样做?

TLDR:自学如何使用 fork/execv 并发现我完全一无所知。

0 投票
1 回答
862 浏览

c - 我想在文件中重定向 ls 的 execv,然后在管道中,为什么不工作?

首先,我想将 ls (exec) 的输出重定向到一个文件中,然后从一个文件重定向到管道,为什么不工作?当我在文件中重定向时没关系,但仅此而已。

我该怎么做才能找到输出的长度ls?(这就是我重定向到文件的原因)。

0 投票
1 回答
215 浏览

c++ - 无法运行 execv

我一直在尝试使用 exevp 运行命令,如下所示:

这行得通。但是,当我想将第一个参数“/usr/sbin/program”作为参数时说:

这失败并返回-1。我不明白为什么。

谢谢大家

0 投票
1 回答
342 浏览

c - 通过管道与 execv()'ed 程序通信不起作用

我尝试编写一个加载程序并将套接字 io 重定向到这些程序的套接字。听起来很像inetd,但据我所知,inetd 在请求其端口时会加载程序。我想让它永久加载。

到目前为止,一切都很好。编写套接字服务器并不是那么棘手,但我没有让其余的工作。我基本上想打开一个管道(),dup2()它到stdin和stdout和execv()我的程序。

问题是,我被调用的程序没有得到任何输入。我会尝试用一个测试程序来展示它。有人可以告诉我,怎么了?

0 投票
2 回答
3379 浏览

c - fork() kill() 和 execv()

我在这里尝试进行小型单元测试。但是程序并没有像我预期的那样工作。

现在,我希望程序运行如下: 1.孩子运行 firefox(它确实如此) 2.爸爸打印 DAD IS GOING TO KILL U(到目前为止一切顺利) 3.firefox 将打开 3 秒,然后然后关闭(也这样做) 4.子进程将完成运行 execv 并打印“IVE BEEN KILLED”。这不会发生。

我的目标是知道 execv 运行的程序在 execv 继续运行(我被杀死 printf 所在的位置)之后立即通过提高几个标志来完成。我有几千行的代码,除非必要,否则不想使用其他方法。

谢谢

0 投票
1 回答
1629 浏览

c++ - 重定向由 execv 运行的进程的输出

可能重复:
将输出重定向到 C 中的文件

我正在运行如下进程:

问题是我如何使它的输出重定向到

我尝试将它添加到 args 数组,但它作为参数发送给程序......

有人知道吗?

谢谢

0 投票
1 回答
469 浏览

c++ - 如何在程序中调用 2 个或多个 shellexecute 函数

我是windows平台winapi c++的初学者,我需要在一个程序中执行3个exe文件,即安装程序。我使用了shellexecute,exec v,系统调用,但在第一次安装程序后都退出了程序,请帮我解决这个问题...

我使用的部分代码

提前谢谢你:)

0 投票
1 回答
1248 浏览

c - 使用管道分叉过程中的程序崩溃

我正在为课程作业编写一个基本的 shell,它将在给定的路径列表中找到一个命令,并执行该命令。它也用于处理管道。但是,当我派生一个子进程时,我在 gdb 中收到“写入错误:管道损坏”消息,并且程序突然终止。

我似乎无法理解为什么会发生这种情况,因为我一直对打开和关闭正确的管道持谨慎态度,并且进程分叉似乎可以按预期工作。有更多 C 和 unix 编程经验的人可以帮我诊断问题吗?我的 fork 实现/管道实现在逻辑上是否不正确?