如何让一个C++程序在Linux中打开另一个程序?它与使用shell命令的Windows相似吗?Linux C++如何打开一个程序
-6
A
回答
0
您可以使用标准库调用system()
,这与Windows Shell命令非常相似。对于更多控制,您可以使用exec()
及其变体。
1
3
有一个标准的C函数,system()
它运行一个命令并等待它完成。
有一个标准的POSIX函数popen()
,它在新进程中运行命令并返回连接到新进程的管道。管道通常是单向的,它可以读取或写入(一些平台,如BSD允许双向管道)
或者你可以手动执行,通过使用POSIX功能fork()
来分叉一个新的进程,然后其中一个exec()
家族用不同的程序替换过程映像。
我认为最简单的方法是使用我的Pstreams库。这将在新进程中运行命令,并使用iostream兼容接口将管道连接到其任何stdin
,stdout
和stderr
。这比fork
& exec
(但要简单得多),但比popen
更具灵活性和安全性。
0
使用execl()
函数。它适用于C语言,但它应该可以正常工作。如需更多信息和一些软件为例看看这个:http://www.gidforums.com/t-3369.html
0
通常你第一次使用功能叉启动另一个过程,然后EXEC交换新的进程正在运行的是希望PROGRAMM(即PROGRAMM开始antother程序)与你想开始的那个。代码看起来大致如下:
pid_t pid = fork();
switch(pid) {
case 0: // we are the child process
exec(name of exectuable); //exact signautre differs
break;
case -1: //An error ocurred
std::cout << "error\n";
}
叉克隆您正在运行的进程。他们是完全相同的,他们甚至运行相同的程序。唯一的区别是返回的PID。调用过程获取孩子的pid,孩子得到零。开关状态决定了这些情况。 Exec取代了另一个程序正在运行的程序。从我记得的地方来看,它只保留文件描述符。 Exec在参数和搜索路径方面有几个varaiants,请在man page中查找它们。
相关问题
- 1. 如何在Linux中打开一个程序的多个实例
- 2. 如何通过linux中的C程序打开新终端
- 3. C#如何选择一个打开的应用程序窗口
- 4. C Linux的 - 如何从另一个程序执行程序
- 5. 从Linux上的C++文件打开一个进程
- 6. C# - 如何打开Excel应用程序?
- 7. 从C打开/运行另一个程序,然后关闭这个程序
- 8. 在C程序中打开一个简单的python“程序”!
- 9. 在Linux上如何守护一个c/C++程序
- 10. 当我打开Firefox时自动运行一个C程序?
- 11. 一个C++应用程序无法在Linux上的一个线程中打开2个SQLite数据库?
- 12. C++程序在Linux上正常打开文件但在Windows上不打开
- 13. 如何检查一个文件是否被另一个进程(Java/Linux)打开?
- 14. 如何打开这个程序?
- 15. 如何列出Linux中每个应用程序打开的线程?
- 16. 从C++程序在Windows和Linux中打开chm文件
- 17. 从基于Linux的C程序打开并读取Excel?
- 18. 如何制作打开其他程序的C++程序?
- 19. 如何在其默认程序中打开文件 - Linux
- 20. 从另一个程序中打开一个应用程序
- 21. 如何打开在另一个应用程序中打开的文件
- 22. 如何在C中打开一个进程?
- 23. `start`程序打开一个新窗口
- 24. 打开一个应用程序的Java
- 25. 巴什 - 在打开一个程序
- 26. 打开与另一个程序
- 27. 如何从C++代码打开一个单独的终端程序?
- 28. 打开一个在线应用程序来打开txt文件
- 29. Visual Studio C# - 应用程序在后台打开一个cmd
- 30. c#打开一个压缩文件到程序
使用'exec'函数之一。 –
您是否在尝试将Windows +终端与Linux + C++进行比较? – 2013-01-15 22:10:29
这真的不难搜索。 – chris