![]() |
1
21
这完全取决于你想做什么,确切地说,它是:
不过,我会尽量提供一些信息供你决定。
当你
使用这些信息,您应该能够编写一个非常基本的shell;在命令行上使用进程名并运行您告诉它的进程。当然,shell做的不止这些,比如管道输入和输出,但是您应该能够使用
注意:这是*nix特有的!这在Windows上不起作用。 希望这有帮助。 |
![]() |
2
16
如果您想执行更复杂的操作,例如读取外部程序的输出,则 popen 系统调用。例如,以编程方式访问目录列表(这是一个有点傻的示例,但很有用 例如),您可以这样写:
像这样输出
|
![]() |
3
11
|
![]() |
4
8
我想给你一个很大的警告,不要使用系统和100%永远不要使用系统,当你写一个库。它是30年前设计的,当时多线程还不为Unix这个玩具操作系统所知。即使现在几乎所有的程序都是多线程的,它仍然不可用。 使用popen或做一个fork+execvp,所有其他的一切都会给你在信号处理、环境处理代码中的死机等方面难以发现的问题。这是纯粹的邪恶和耻辱的选择和最有评价的答案是促进使用“系统”。在工作场所推广使用可可碱更健康。 |
![]() |
5
3
在UNIX上,我认为如果您希望派生的进程独立于spawing进程运行,那么基本上需要分叉它:例如,如果您不希望在退出派生进程时终止派生进程。 Here is a 解释Fork、System、Exec之间所有细微差别的页面。 如果你在Win、Mac和linux上工作,我可以向你推荐 Qt Framework and its QProcess object ,但我不知道这是否是你的选择。最大的优点是您可以在windows linux和mac上编译相同的代码:
另外,你甚至可以从母亲过程中消灭孩子进程, 通过一条小溪和它保持联系。 |
![]() |
6
2
|
![]() |
7
1
如果需要检查/读取/解析外部命令的输出,我建议使用popen()而不是system()。 |
![]() |
8
1
说到平台依赖的菜谱,在Windows上使用
CreateProcess
,在Posix(Linux、Mac)上使用
|
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |