问题标签 [execl]

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 投票
0 回答
205 浏览

c - 为什么 exec() 系列函数实际上返回一个值?

在一本关于 Linux 和 Unix 编程的书中,我发现了这个陈述(强调我的):

"所有函数( exec()-family)都在出错的情况下返回-1。否则在成功执行时不会返回调用程序。因此,检查返回值是多余的;您可以直接继续执行错误例程。 "

这似乎符合相应的 Linux手册页

"返回值 -exec()函数仅在发生错误时返回。返回值为-1, 并errno设置为指示错误。 "

因此,如果当前过程映像已成功替换为新的过程映像,则不应返回。只有在创建新图像时发生错误时,exec()-functions 之一才会真正返回 ( -1)。


反过来,而不是 fe 意味着:

一个人可以简单地做:


  • exec()但是,如果调用者的进一步程序执行已经表明发生了错误,为什么 -family 的函数通常会有返回值呢?

  • 函数末尾的简单return;语句和相应的返回类型void就足够了吗?

  • 只是为了适应常用方法/实践来始终检查返回值还是有不同的目的?


有关的:

0 投票
0 回答
107 浏览

c++ - 使用 execl 重定向标准输出的问题

我最初编写了一个在我的 Linux 上运行命令的小型 c# 服务器。该应用程序很好地捕获了命令的标准输出并将它们发送回客户端。然后我在 Linux 机器上的 c# 环境就出现了问题。所以我决定用 c++ 重写应用程序,但遇到了重定向或 execl 函数的问题。我的第一次尝试可以让我的重定向工作,但随后我发出了 execl 调用。所以我做了一些搜索,发现了一些有效的代码,如何从 execl 命令中捕获输出. 我对代码做了一些小的修改来测试我对 execl 调用的处理,它不会重定向 avrdude 的标准输出。我确实更改了函数 cmd_quem 来处理应用程序名称和参数并为 execl 返回错误。主函数调用 cmd_quem 两次,例如命令,然后是我的命令。我也颠倒了这两个函数调用的顺序,每次我对 avrdude 的调用都不会重定向标准输出,但在 c# 中它起作用了。

我知道 avrdude 的路径是正确的。似乎这些论点也通过 excel 传递,我不知道为什么。输出应该是尝试读取进程而不是命令行选项。任何帮助,将不胜感激。

有什么想法或建议吗?

我的程序输出是

我已经在 Gentoo 和树莓派盒子上测试了代码。覆盆子连接了一个函数式程序员,它是相同的输出。

0 投票
1 回答
194 浏览

c - 用 execl() 替换 system() :我什么时候需要使用 fork()?

我正在尝试从我的 C 程序中调用外部程序。我知道打电话system()是个坏习惯。我一直在阅读有关如何使用execl()execv()替换的内容system(),但由于我的脑容量有限,我想请求一些示例和指导。

如果我要跑步

那么这是我应该做的吗?

我在 StackOverflow 上发现了一个关于替换为的类似问题system()execl()但答案(3 票)没有谈论fork(). 如何使用 execl 作为系统的替代品fork()如果我正在等待子进程完成以便我自己的程序可以继续,我 是否需要?

我知道也有,execv()但我有限的大脑会更喜欢execl(),除非有人告诉我这样做有缺点。网络上的大多数示例使用 execv 而不是 execl,可能是因为当我搜索 execl 时,Google 一直在告诉我有关 MS Excel 函数的信息。


我将描述我的用例,但如果我在其他情况下需要它,我会更喜欢我的问题的一般答案,而不是针对我的情况的特定答案,例如“你为什么还要使用 $PROGRAM1 ?你应该下载 $PROGRAM2 !”

我正在为我孩子的 Kubuntu 系统拼凑一个 PyQt 应用程序,以将对某些网站 (youtube) 的 Internet 访问限制为每天一定的小时数。他可以主动关闭自己的上网,为以后节省上网时间;当他重新打开它时,我的应用程序将根据剩余时间设置 iptables 规则。理想情况下,我会在我的 Python 应用程序中调用“iptables”,但 iptables 需要以 root 身份执行(我不想 sudo 输入密码或设置无密码 sudo 用户帐户),并且不允许使用 Python 脚本以 setuid root 身份运行。因此,我正在编写一个 C 程序,其唯一功能是以 setuid root 身份运行并将(经过清理的)参数传递给 iptables:

几十年没做C编程了。将不胜感激一些关于电话的牵手execl()。谢谢。

0 投票
1 回答
186 浏览

c - Windows10平台_execl()函数的使用

_execl() 返回 -1 和错误消息“没有这样的文件或目录”,即使给定的文件在那里。当我直接在命令提示符下运行 gzip 命令时,它可以工作。我无法理解我在这里缺少什么。

有人可以举例说明如何使用此功能,我在寻找解决方案时发现了另外一个 API system(),但在使用之前我想知道这两者在 Windows 平台上的区别是什么?

0 投票
2 回答
105 浏览

c - 为什么一个 exec 应该“sh -c a.out”而不是 a.out 本身?

我正在研究 Applepopen()https://opensource.apple.com/source/Libc/Libc-167/gen.subproj/popen.c.auto.html上的实施,并注意到他们这样做execl(_PATH_BSHELL, "sh", "-c", command, NULL)而不是execl(_PATH_BSHELL, command, NULL).

为什么您想要(或应该)执行一个可执行文件,例如a.out通过sh -c而不是可执行文件本身?

如果您执行sh -c a.out而不是仅执行a.out自身,那么实际a.out进程是否最终成为“孙”进程而不是进程?

0 投票
1 回答
44 浏览

c - 如何使用 execl 运行管道并将结果写入文件?

我尝试在 C 中做这样的事情,但我不知道如何:(:

与执行。

现在我只能做这样的事情:

它将屏幕转储写入文件 xwd1.xwd 但我不知道如何使用转换制作管道。感谢所有信息和帮助。

0 投票
0 回答
56 浏览

c - c - execl`d 程序不返回提示

编辑:问题已在评论中回答

所以,我正在研究管道。长话短说,我有两个程序:

  1. 第一个程序创建 apipe和两个forks:首先fork关闭read描述符并将一些东西写入write一个(然后关闭它),第二个fork关闭write一个,dup2read管道一侧到标准输入(结束read侧本身)和execl第二个程序,给出一个文本的大小第一个fork作为参数写入;父母关闭管道两侧和waitpids 为孩子是execld (第二个)。
  2. 第二个程序只是 read从它的标准输入(管道端)中取出东西并将write其发送到标准输出,然后关闭管道端以防万一。

在这样的设置中,一切都按我的预期工作,但是当我waitpid在第一个程序中删除(或者只是等待第一个写入而不是第二个的子程序)时,第二个程序的行为很奇怪 - 它执行到最后,通过所有IO(也就是printf之前exit被执行),然后不给我提示返回。也就是说,终端看起来就像程序在等待来自标准输入的输入。如果我在没有 的情况下执行第一个程序execl,那么一切正常,如果我只使用一个参数执行第二个程序,那么它只会等到输入被提供给标准输入(因为它应该不是管道的一部分)案子)。

据我所知,当父母终止时,孩子被“继承”并被init教育wait。但即使它不是,也就是说,即使它仍然是僵尸,那仍然会很奇怪——为什么在我明确等待之前我不能得到我的提示?

代码如下(正常工作的设置):

第一个程序

第二个节目

先感谢您!

0 投票
1 回答
48 浏览

c - 如何使用 execl 来管理多个进程

我还是操作系统领域的新手。目前我正在尝试在 C 中实现一个 shell,主要功能之一是管道的能力。我的问题是:在执行 fork dup 和其他需要的过程之后,如果我有多个参数,我应该如何在 execl 中编写。例如,一旦我将有一个管道 3 个进程,例如 sth | 某事 | sth 其他时候有两个喜欢的 sth | 某事

0 投票
0 回答
32 浏览

bash - [已解决] execl("/bin/bash", ...) 的不可预知的行为

我正在编写一个简单的 C 程序,firefox如果没有firefox打开窗口,它将启动,否则firefox窗口将被聚焦。我xdotool在 shell 脚本中使用来执行此操作并在我的 C 程序中执行 shell 脚本。

这是C程序的关键部分:

文件F.sh如下:

但是,当我运行 C 程序时,它有时会按预期工作,无论是否firefox已打开。但有时当firefox它已经打开并且我运行程序时,它会打开一个新窗口firefox并将空行回显到/home/simon/log.

我认为这不是 shell 脚本的问题,也不是xdotool. 因为每次我直接在终端中运行 shell 脚本,或者bash /home/simon/F.sh在终端中运行时,它总是给我正确的响应。我怀疑这是执行环境的问题。谁能给我解释一下这种现象?

#更新

这个问题通过查看xdotool.

0 投票
1 回答
176 浏览

vba - 如何保留标题并删除所有数据?

我试图保留第一行并删除/删除名为“Main”的工作表的所有数据。我下面的代码不会从名为“Main”的工作表中删除任何数据。

以上是删除除标题行之外的所有数据,并删除除“主”表之外的任何其他表。

我想要的只是从名为“Main”的工作表中删除除标题行之外的所有数据。

主要 Excel 数据
主表excel

它应该删除除第 1 行标题行之外的所有数据并调整工作表大小。
期望的输出