我知道在 DOS/Windows 应用程序中,您可以使用以下行从代码发出系统命令:
system("pause");
or
system("myProgram.exe");
...来自 stdlib.h。是否有类似的 Linux 命令,如果有,我会在哪个头文件中找到它?
另外,这被认为是不好的编程习惯吗?我正在考虑尝试使用以下命令获取已加载内核模块的列表lsmod
命令。这是好主意还是坏主意?我发现一些网站似乎以负面的眼光看待系统调用(至少是 system("pause");)。
system
这是一个坏主意,原因如下:
- 您的程序将暂停,直到命令完成。
- 它通过 shell 运行命令,这意味着您必须担心确保传递的字符串对于 shell 的计算是安全的。
- 如果您尝试运行后台命令
&
,它最终成为一个孙子进程并成为孤儿并被init
进程(pid 1),此后您无法检查其状态。
- 无法将命令的输出读回到程序中。
对于第一期和最后一期,popen
是一种解决方案,但它没有解决其他问题。你真的应该使用fork
and exec
(or posix_spawn
)自己运行任何外部命令/程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)