问题标签 [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.
c++ - 从 C++ 中的 execve 调用时,ffmpeg 产生错误的输出
我正在编写一个涉及从 c++ 程序调用 ffmpeg 的 c++ 程序。几天前,我使用 std::system 让它工作了
但这只能工作一次,现在这会产生 8MB 左右的 .mp4 视频,无法在任何地方播放。所以由于上一个问题中的建议,我转向了 execve。
这是我的代码
系统日志的输出是:
在这种情况下,视频的大小约为 90B,并且也已损坏。
注意:如果我从命令行运行相同的命令,视频可以正常播放。
我究竟做错了什么?
提前致谢!
编辑
感谢 ouroborus(上面提交的更改)我可以制作 18MB 的视频,但我无法播放它们。
java - 防止java程序打开线程
我正在尝试运行一个 java 应用程序,更具体地说是一个 jar 编译的应用程序,在 c 中使用 execve()
类似的东西:
这工作正常,但是当我尝试限制该程序可以使用类似打开的线程数时:
我的 JVM 有问题,它会打开线程,我正在阻止它,所以我有这个错误:
如何防止在 java 应用程序中打开的线程而不是由 JVM 打开的线程?!
请注意,问题是如何防止用户线程而不是系统线程,我需要对运行环境进行限制,就像我在第二个代码“RLIMIT_NPROC”中所做的那样
谢谢!
c - linux编程,标准输出管道在execve之前不起作用
代码:
然后编译并执行:
使用管道时未显示“测试输出” 。
并使用 ltrace 和 strace 调试,我得到:
关于“测试输出”,程序调用“puts”,这是libc库调用,但内核“write”没有调用。为什么 ?
c - 从 C 打开/运行另一个程序,然后关闭该程序
如何从 C 执行/打开/运行另一个程序,而不是阻止它,而是让它同时运行。然后我想做一些像服务器/客户端这样的测试,如果已经完成了,我只想杀死/关闭这个程序。我读过关于
但是第一个似乎阻止了等待结果,第二个似乎只在Linux上工作?在最好的情况下,我希望拥有跨平台或最低限度的 MacOS/Windows/Linux(Ubuntu) 工作解决方案。当我不再需要它时,我还需要关闭这个以前打开的程序。
python - Python sys.executable 为空
我正在测试用os.execve
虚拟环境做一些恶作剧。sys.executable
如果我用另一个 python 子进程替换当前的 python 进程,我会遇到空的问题。
下面的示例显示了正在发生的事情(在 python shell 中运行它):
我在 python shell 中运行上述命令的完整输出:
sys.executable
空着给我带来了问题,最明显的是platform.libc_ver()
因为空着而失败sys.executable
:
请注意,上面的示例是在调用之后运行的os.execve(...)
c - fork 和 execve 分段错误
我的程序应该使用 fork 和 exec 系统调用。exec 应该更改子进程,使其将另一个命令作为参数并执行该命令。例如,要显示当天的消息:
这是我当前的代码
运行后./myexecv cat etc/motd
没有任何反应;只是打印语句。有什么建议吗?
c - execve x86 - 分段错误
我一直在这方面遇到分段错误,有人可以帮我解决这个问题吗,我对 ASM 有点陌生
我正在尝试复制以下内容
提前致谢
python - 使用 setuid/setgid 包装器执行 Python 命令
我有以下 Python 脚本,我想使用 setuid/setgid 位提供的权限执行:
但是:我想直接从 C 包装器执行命令,而不需要中间的 Python 脚本文件。
我尝试使用execve
如下方式执行此操作:
但是当我运行编译的程序时出现以下错误./mycli foo bar
:
我怎样才能做到这一点?
c - 如何使用 execve() 执行程序?
我正在尝试通过模拟 Linux shell 使用 exec() 函数执行一个简单的测试。测试程序应采用以下形式的命令: cmd arg1 arg2 ... 其中 cmd 是命令,arg1, arg2, ... 是命令行参数。然后 exec() 函数将调用 cmd 指定的程序。
我尝试过的是:
运行上述程序时,execve() 返回错误值 -1,perror() 的输出为:No such file or directory。
在命令行上运行程序:
对于这个例子,主要参数 argc 和 argv 应该无关紧要。但是,env 参数是 Linux 环境变量,其中包含 PATH 变量。
c - 找不到传递给 execve 函数的环境
我想看看我在execve()函数中传递的环境变量是否真的传递了,所以我做了这段代码(Main.c):
(get.c):
但是,当我执行 Main.c 发出的二进制文件时,我得到以下输出:
路径:(空)
而我想看
路径:垃圾箱
你有什么解释吗?