运行 一个 Linux 可执行文件,来自 C/C++ 可执行文件,无需使用 system() 或 system() 包装器
Running a Linux Executable from C/C++ Executable Without Use of system() or system() Wrappers
我正在寻找一种从单独的 Linux 可执行文件执行 Linux 可执行文件的方法,该可执行文件是从 C 或 C++ 编译的。但是,我查看了许多 Stack Overflow post,它们都直接要求用户使用 system()
函数或系统函数的包装器,我不想要依赖 shell,因为如果转移到具有不同 shell.
的不同操作系统,它很容易崩溃
在 post How do I execute an external program within C in Linux with arguments 中,第二个答案指出 execve()
是 system()
函数的包装器,这让我对中的其他函数保持警惕exec()
家庭。
我还看过以下文章:
- How do you write a C program to execute another program?
- http://www.cplusplus.com/forum/beginner/168287/
- Run Another Program in Linux from a C++ Program
感谢所有帮助!
execve()
不是 system()
的包装;它是 execve
系统调用本身的包装器。
execve()
替换当前进程,所以你可能需要fork()
然后在子进程中执行execve()
,从而模仿 system()
.
的行为
我正在寻找一种从单独的 Linux 可执行文件执行 Linux 可执行文件的方法,该可执行文件是从 C 或 C++ 编译的。但是,我查看了许多 Stack Overflow post,它们都直接要求用户使用 system()
函数或系统函数的包装器,我不想要依赖 shell,因为如果转移到具有不同 shell.
在 post How do I execute an external program within C in Linux with arguments 中,第二个答案指出 execve()
是 system()
函数的包装器,这让我对中的其他函数保持警惕exec()
家庭。
我还看过以下文章:
- How do you write a C program to execute another program?
- http://www.cplusplus.com/forum/beginner/168287/
- Run Another Program in Linux from a C++ Program
感谢所有帮助!
execve()
不是 system()
的包装;它是 execve
系统调用本身的包装器。
execve()
替换当前进程,所以你可能需要fork()
然后在子进程中执行execve()
,从而模仿 system()
.