如何从C++程序中调用Linux命令?

4

我写了下面这个简单的C++程序,目的是学习如何从C++程序中调用Linux命令(使用system命令)

请指导为什么我会从C++编译器得到错误?我的程序有什么问题?

更多exm2.cc

#include <stdio.h>
#include <stdlib.h>
int main()
{
  system("echo -n '1. Current Directory is '; pwd");
  system("mkdir temp");
  system();
  system();
  system("echo -n '3. Current Directory is '; pwd");
  return 0;
}


  [root@linux /tmp]# g++ -Wall  exm2.cc  -o exm2.end

  /usr/include/stdlib.h: In function גint main()ג:
  /usr/include/stdlib.h:738: error: too few arguments to function גint system(conג
  exm2.cc:7: error: at this point in file
  /usr/include/stdlib.h:738: error: too few arguments to function גint system(conג
  exm2.cc:8: error: at this point in file

13
你在发布之前有阅读错误信息吗?它就在那里指出了问题。 - Scott M.
不需要通过system()执行任何操作。可以使用getcwd()、mkdir()等函数来代替。system()非常不可移植,但在运行时会巧妙地掩盖这一点。 - Flexo
2
非常抱歉,这是我第一次用C++编写程序,感谢您的评论。 - jon
这个怎么有四个赞? - Leo
这个怎么有四个赞??? - undefined
4个回答

13

如果没有 char* 参数,你无法使用 system()

因此,以下语句是错误的

system();
system();

如果你不打算做任何事情,就不要把任何东西放在那里。


2
@jon- 你原本想让 system(); 这一行实现什么功能?把它改成 system(""); 可以解决 "too few arguments" 的错误,但并不一定会让这个语句有用。 - bta

13

system() 接受一个参数。因此,您可以使用空字符串调用它:

#include <stdio.h>
#include <stdlib.h>
int main()
{
  system("echo -n '1. Current Directory is '; pwd");
  system("mkdir temp");
  system("");
  system("");
  system("echo -n '3. Current Directory is '; pwd");
  return 0;
}

不过,你也可以直接把那些行删除。


8

system()函数需要一个参数。 尝试删除第7和第8行。

#include <stdio.h>
#include <stdlib.h>
int main()
{
  system("echo -n '1. Current Directory is '; pwd");
  system("mkdir temp");
  system("echo -n '3. Current Directory is '; pwd");
  return 0;
}

是的,你说得对,我接受了你的评论,从现在开始我会用“.cpp”来命名文件,非常感谢。 - jon
4
@jon: 不,他说的不对。C++源文件可以使用任何你想要的扩展名。一些扩展名比其他扩展名更常见。“.cpp”和“.cc”都是完全可以接受的,且广泛使用。 - Benjamin Lindley
@PigBen 好的,感谢您的精彩纠正,从世界上最好的开发者那里得到专业的答案真是太棒了,再次感谢。 - jon
@PigBen 我之前不知道 .cc,谢谢。 - Alpine
从 https://dev59.com/W3I_5IYBdhLWcg3wDOrW 的一个评论中,可能的起源: cc --> C with classescpp --> C plus plus - Milan

3

system接受一个const char*参数。你调用了它5次,其中两次没有传递任何参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接