在Linux下从C,C ++发出系统命令
我知道,在DOS / Windows应用程序中,您可以使用以下代码从代码发出系统命令:
system("pause"); 要么
 system("myProgram.exe"); 
…来自stdlib.h。 有没有类似的Linux命令,如果是的话,我可以find哪个头文件?
 另外,这被认为是不好的编程习惯? 我正在考虑尝试使用lsmod命令获取已加载的内核模块的列表。 这是一个好主意还是坏主意? 我发现一些网站,似乎查看系统调用(至less系统(“暂停”);)在负面的灯光。 
毫不奇怪,命令仍然是
 system("whatever"); 
 而头文件仍然是stdlib.h 。 这个头文件的名字意思是“标准库”,这意味着它在支持C的每个标准平台上 
 是的,调用system()往往是一个坏主意。 通常有更多的程序化的做事方式。 
 如果你想看看lsmod是如何工作的,你可以随时查看它的源代码,看看它所做的主要系统调用是什么。 然后自己使用这些电话。 
 快速的Googlesearch会显示这个链接 ,这表明lsmod正在读取/proc/modules的内容。 
  system是一个坏主意有几个原因: 
- 您的程序暂停,直到命令完成。
- 它通过shell运行命令,这意味着您必须担心确保您传递的string对于shell来说是安全的。
-  如果你尝试用&运行一个后台命令,它最终会成为一个孙subprocess,并被init进程(pid 1)孤立并带入,之后你无法检查它的状态。
- 没有办法将命令的输出读回你的程序。
 对于第一个也是最后一个问题, popen是一个解决scheme,但是没有解决其他问题。 你应该真的使用fork和exec (或posix_spawn )来运行任何外部的命令/程序。 
 那么,lsmod通过parsing/proc/modules文件来完成。 这将是我首选的方法。 
我认为你正在寻找的是fork和exec。