问题标签 [execve]

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 投票
8 回答
148053 浏览

linux - 执行二进制文件时出现“没有这样的文件或目录”错误

我在 Ubuntu 9.10 x86_64 上安装了一个二进制 Linux 应用程序。该应用程序附带旧版本的 gzip (1.2.4),它是为更旧的内核编译的:

我无法执行这个程序。如果我尝试过,就会发生这种情况:

ldd 对这个二进制文件同样不满意:

我很好奇:这个问题最可能的根源是什么?损坏的文件?还是由于为更旧的 {kernel,libc,...} 构建而导致的二进制不兼容?

根据 nos 的建议,这是以下输出strace ./gzip

这是输出readelf -a ./gzip

0 投票
1 回答
1519 浏览

c++ - 从 Mac OS X 启动守护进程执行

是否可以从 launchd 守护进程中使用execve ?我想成为守护进程的进程使用 fork() 后跟 execve 启动了几个子进程,但是创建启动守护进程的文档指出“调用 fork 后跟 exec”是不行的。这是否意味着我不能从守护进程创建子进程?

0 投票
6 回答
460 浏览

c - 这个程序在做什么?

那些memcpymemset之前execve做什么?它如何影响程序proc

bss2的更新代码

更新

现在似乎问题归结为环境变量的位置?

0 投票
2 回答
195 浏览

execve - execve 之后的行是什么,因为它不会成功返回?

return 0;为了什么?

0 投票
4 回答
2065 浏览

python - 如何使用适当的 python 版本启动 python 程序?

给定一组python程序:

它们存储在共享网络目录中,在混合环境(Solaris 和不同风格的 Linux)中执行,并且都需要特定的 python 版本,该版本可能不在用户 $PATH 中,并且可能不会安装在同一位置不同类型的机器。

程序如何指定要使用的 python 解释器?

我考虑过的替代方案:

  1. 每个 python 程序中的一个 shebang,引用一个 python 包装器,该包装器为当前类型的机器启动一个适当的 python 解释器。但是 execve 不允许将包装器可执行文件实现为 shell 脚本,并且为每台机器编译本机可执行文件需要大量维护。

  2. 为每个 python 程序制作一个启动 shell 脚本。所有的 shell 脚本可能共享相同的逻辑来选择 python 解释器,但如果可能的话,我想避免为每个 python 程序使用单独的 shell 脚本。

  3. 进行某种 hack 以使每个程序都可以作为 shell 脚本和 python 程序运行,类似于:

你还有其他想法吗?

0 投票
1 回答
256 浏览

c - 多个程序的 Execve()

假设我有两个程序 X 和 Y 要求从stdin. X 和 Y 使用fork()后跟execve()来自 A 的三分之一运行。

发生的事情是首先安排 X。当 X 到达 scanf 语句时,Y 被调度并且 X 永远不会得到输入。我该如何照顾它?

0 投票
2 回答
94 浏览

c - 为什么一个程序的行为可能取决于它的孩子完成的顺序?

fork()我使用第三个程序运行几个execve()程序。这些程序本来打算做的一切都完成了,但最后第三个程序没有返回......即命令提示符没有出现。

wait()如果我在调用程序中使用命令,则execve仅当等待语句的顺序与程序结束的顺序匹配时,程序才会返回execve。为什么会这样?

这是简化的代码:

如果 child1 先完成,它工作正常。./xyz 和./abc 有一些简单的处理和控制到最后。

0 投票
2 回答
14180 浏览

c - C - 通过 execve 传递管道

我正在为学校做一个项目,我不确定我试图解决它的方式是否可行。该项目包括制作一个程序,分叉 2 个孩子,然后他们必须用其他程序替换他们的 pid,并让 2 个孩子通过管道使用 read() 和 write() 交谈。

我的问题是使用 execve 并将管道传递给那个孩子。我现在拥有的是这样的:

父程序 - 分叉并让子程序调用 execve:

尝试使用 dup2 重定向到标准输入和标准输出。然后在孩子们中,我尝试像这样读写标准输出和标准输入:

Child - 从标准输入读取数据

我正在根据您的建议使用 dup ,但我不确定我是否像我应该做的那样访问标准输入和标准输出。

--这里是另一个孩子,仅供参考

--如果有任何区别,似乎另一个孩子(写入管道的那个)正在成功地写入它,但上面的孩子从不从管道中读取,并且上面的 outFile 总是空的。

* *仍然发生同样的事情

我不是在找你为我解决问题,我只是真的被卡住了,不知道我是否做错了什么。再次感谢您的任何帮助。

我正在积极寻找可以使用的示例,但我找不到任何显示他们执行的孩子的代码,这就是我现在的问题所在。

0 投票
3 回答
2046 浏览

linux - 函数execve的实现(unistd.h)

如何查看函数 execve 的实现(在 x86_64 Linux 下),它在库 unistd 中?我想要这个,因为我想知道如何使用汇编程序调用外部程序,而不调用 execve。我知道有一个名为 execve 的系统调用,但我不知道如何使用它。

如何将 char * 类型和 char * [] 类型的变量放入寄存器?

0 投票
1 回答
1871 浏览

c - 传递文件描述符 - Execve(类型转换)

我想知道如何通过execve()命令传递文件描述符,然后在另一端访问它。我知道我可以dup2用来重定向文件描述符,但我不能这样做。我需要将文件描述符实际传递给孩子并在孩子中使用它。

到目前为止我做了什么:

Parent 使pipe+ args 如下所示:

execve然后孩子fork()像下面这样调用:

然后,在阅读器程序中,我尝试访问传递的管道描述符:

argv[2]应该引用管道描述符,然后argv[1]应该去管道的写端。我几乎肯定我需要在这里做一些不同的类型转换,但我尝试的一切都不太成功。

注意:我有这个程序的工作版本,用于dup2重定向到孩子,但我必须按照项目的说明将管道描述符实际传递给孩子。stdinstdout

任何帮助表示赞赏。