C++ Linux Shell编程cp命令

C++ Linux Shell编程cp命令,c++,linux,shell,C++,Linux,Shell,我正在linux上编写一个简单的shell程序。我在shell中实现了用户发出的许多命令。但我不知道如何发出命令来编写这个命令。我的意思是当用户发出一个简单的命令,即ls或date时,我只是在我的shellsystem(“ls”)中编写。我将string的值(由用户给出)与ls进行比较,如果为true,则实现。比如说 string s; cin>>s; if(s=="ls") system("ls"); 现在,如果用户说cp file1.cpp file2.cpp我该怎么办? 提

我正在linux上编写一个简单的shell程序。我在shell中实现了用户发出的许多命令。但我不知道如何发出命令来编写这个命令。我的意思是当用户发出一个简单的命令,即
ls或date
时,我只是在我的shell
system(“ls”)
中编写。我将string的值(由用户给出)与ls进行比较,如果为true,则实现。比如说

string s;
cin>>s;
if(s=="ls")
 system("ls");
现在,如果用户说
cp file1.cpp file2.cpp
我该怎么办?
提前谢谢。

我不确定这是否是您想要的,但您可以使用
sprintf

int sprintf ( char * str, const char * format, ... );
所以基本上在你的情况下:

string f1,f2;
cin >> s >> f1 >> f2;
if(s=="cp")
{
    sprintf(ret,"cp %s %s",f1,f2);
    system(ret);
}
当然,在创建sprintf

system()
之前,您需要进行验证。它只是一个接受
常量char*
参数的函数。您不必传递文本,任何
char*
(到以nul结尾的c样式字符串)都可以

如果只想将一行用户输入传递给shell,可以将其读入
字符串
,然后使用
字符串::c_str()
将其传递给
系统()


您需要解析命令中给出的每个值以检查其有效性。例如,确保在发出
cp
命令时有两个文件,并检查它们是否有文件扩展名,等等@m_callens对不起,我不明白你说的是什么?我只是一个操作系统初学者,对psuedo代码有一点帮助,否则会收到一些链接。你可以跳过验证,让终端吐出错误。@ShaniMughal你的程序做什么?您基本上可以捕获用户输入的第一个单词,以“猜测”用户给出了什么命令。我说“猜”,因为这个词可以是别名、函数、重定向。。。还有,您将如何处理管道?@m_callens如何在
system()
命令中写入值?它只接受双引号中的字符串。
std::string input;
std::getline(std::cin, input);
system(input.c_str());