C++ 执行ls命令并打印输出
所以我做了这个:C++ 执行ls命令并打印输出,c++,C++,所以我做了这个: #include <iostream> #include <string> using namespace std; int main() { while(true) { string x; string y; string an1[3] = {"quit","exit","leave"}; double ver = 0.1; cout << "basic0.1% "; c
#include <iostream>
#include <string>
using namespace std;
int main()
{
while(true)
{
string x;
string y;
string an1[3] = {"quit","exit","leave"};
double ver = 0.1;
cout << "basic0.1% ";
cin >> x;
if (x == "upgrade")
{
system("yay -Syyu");
}
else if (x == "install")
{
cout << "What do you want to install?" << "\n";
cin >> y;
system(("sudo yay -S " + y).c_str());
}
else if (x == "version")
{
cout << "version: " << ver << "\n";
}
else if (x == "clear")
{
system("clear");
}
else if(x == "quit" || "leave" || "exit")
{
break;
}
else if(x == "ls")
{
}
}
return 0;
}
在else-ifx==ls{}中,我想显示命令的输出,我尝试放置systemls;
但它只是退出了程序。
顺便说一句,这应该是一个针对linux的小型终端模拟器,但我还不确定,我只是玩得很开心。systemls。很好。你的问题是:
else if(x == "quit" || "leave" || "exit")
{
break;
}
假设您键入ls。然后x包含字符串ls。x==quit为false,因为您没有键入quit。leave为true,因为它是非空指针。exit为true,因为它是非空指针。false | | true | | true为true,因此程序退出。systemls。很好。你的问题是:
else if(x == "quit" || "leave" || "exit")
{
break;
}
假设您键入ls。然后x包含字符串ls。x==quit为false,因为您没有键入quit。leave为true,因为它是非空指针。exit为true,因为它是非空指针。false | | true | | | true为true,因此程序退出。FWIW,我建议您不要使用系统-更快、更专注,可能也更安全。FWIW,我建议您不要使用系统-更快、更专注,可能也更安全。使用系统是一种非常不雅观的做法。将popen作为替代方案,这将允许您创建一个子进程来执行命令,并提供两个通信流来与子进程通信。使用system是一种非常不雅观的方法。将popen作为替代方案,这将允许您创建一个子进程来执行命令,并提供两个通信流来与子进程通信。