问题标签 [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 - 用 C 编写自己的 Unix shell - PATH 和 execv 的问题
我正在用 C 编写自己的 shell。它需要能够显示用户当前目录,根据完整路径执行命令(必须使用 execv),并允许用户使用 cd 更改目录。
这是作业。老师只给了我们关于 C 的基本入门知识和关于程序应该如何工作的非常简短的框架。由于我不是一个容易放弃的人,我已经研究了三天如何做到这一点,但现在我很难过。
这是我到目前为止所拥有的:
- 显示用户的用户名、计算机名和当前目录(默认为主目录)。
- 提示用户输入,并获取输入
- 将用户的输入按“”拆分为参数数组
- 通过“:”将环境变量 PATH 拆分为令牌数组
我不知道如何从这里开始。我知道我必须使用 execv 命令,但在我对谷歌的研究中,我还没有真正找到我理解的示例。例如,如果命令是 bin/ls,那么 execv 如何知道显示主目录中的所有文件/文件夹?如何告诉系统我更改了目录?
我一直在使用这个网站,这很有帮助: http: //linuxgazette.net/111/ramankutty.html但我又一次被难住了。
谢谢你的帮助。让我知道是否应该发布一些现有代码,但我不确定是否有必要。
c - execv() 命令挂在 C shell 中
我正在使用 C shell,当我运行/bin/ls
它时,它会正确显示,但会挂起。我拥有的相关代码如下,我觉得它必须在父案例中缺少 wait() 语句?
c - fork 和 execve 的问题
因此,对于课堂作业,我们正在制作自己的基本外壳。在其他功能中,它必须能够处理绝对路径并使用 fork() 和 execv 执行外部应用程序。
这个想法是程序派生一个子进程,调用 execv 替换所述子进程,并在外部执行完成时终止它。
不幸的是我错过了这门课,我尝试了几个我在网上找到的例子,但都没有奏效。问题是父进程复制 execv 命令并自行终止。现在我只是想让它执行“/bin/ls”并返回到shell的主循环。
这是有问题的代码。我想我错过了一些简单的东西。是的,这对教授来说是个好问题,但他不遵守周五的办公时间,我不想等待数小时或数天才能收到电子邮件回复。:P 同样,我知道我应该实施更好的错误检查。现在我将使用基本功能,稍后我将添加花里胡哨。
我已经确认以下所有变量都有其正确的值。问题是我如何只导致子进程在 execv 之后关闭并阻止父进程这样做?
TLDR:自学如何使用 fork/execv 并发现我完全一无所知。
c - 我想在文件中重定向 ls 的 execv,然后在管道中,为什么不工作?
首先,我想将 ls (exec) 的输出重定向到一个文件中,然后从一个文件重定向到管道,为什么不工作?当我在文件中重定向时没关系,但仅此而已。
我该怎么做才能找到输出的长度ls
?(这就是我重定向到文件的原因)。
c++ - 无法运行 execv
我一直在尝试使用 exevp 运行命令,如下所示:
这行得通。但是,当我想将第一个参数“/usr/sbin/program”作为参数时说:
这失败并返回-1。我不明白为什么。
谢谢大家
c - 通过管道与 execv()'ed 程序通信不起作用
我尝试编写一个加载程序并将套接字 io 重定向到这些程序的套接字。听起来很像inetd,但据我所知,inetd 在请求其端口时会加载程序。我想让它永久加载。
到目前为止,一切都很好。编写套接字服务器并不是那么棘手,但我没有让其余的工作。我基本上想打开一个管道(),dup2()它到stdin和stdout和execv()我的程序。
问题是,我被调用的程序没有得到任何输入。我会尝试用一个测试程序来展示它。有人可以告诉我,怎么了?
c - fork() kill() 和 execv()
我在这里尝试进行小型单元测试。但是程序并没有像我预期的那样工作。
现在,我希望程序运行如下: 1.孩子运行 firefox(它确实如此) 2.爸爸打印 DAD IS GOING TO KILL U(到目前为止一切顺利) 3.firefox 将打开 3 秒,然后然后关闭(也这样做) 4.子进程将完成运行 execv 并打印“IVE BEEN KILLED”。这不会发生。
我的目标是知道 execv 运行的程序在 execv 继续运行(我被杀死 printf 所在的位置)之后立即通过提高几个标志来完成。我有几千行的代码,除非必要,否则不想使用其他方法。
谢谢
c++ - 如何在程序中调用 2 个或多个 shellexecute 函数
我是windows平台winapi c++的初学者,我需要在一个程序中执行3个exe文件,即安装程序。我使用了shellexecute,exec v,系统调用,但在第一次安装程序后都退出了程序,请帮我解决这个问题...
我使用的部分代码
提前谢谢你:)
c - 使用管道分叉过程中的程序崩溃
我正在为课程作业编写一个基本的 shell,它将在给定的路径列表中找到一个命令,并执行该命令。它也用于处理管道。但是,当我派生一个子进程时,我在 gdb 中收到“写入错误:管道损坏”消息,并且程序突然终止。
我似乎无法理解为什么会发生这种情况,因为我一直对打开和关闭正确的管道持谨慎态度,并且进程分叉似乎可以按预期工作。有更多 C 和 unix 编程经验的人可以帮我诊断问题吗?我的 fork 实现/管道实现在逻辑上是否不正确?