>command; if(c-6ren">
gpt4 book ai didi

c++ - 使用 C++ 的 Unix 命令

转载 作者:太空宇宙 更新时间:2023-11-04 15:31:49 35 4
gpt4 key购买 nike

我需要从 C++ 程序运行 Unix 命令。

    string command;
do{
cout<<"~ "<<get_current_dir_name ()<<">";
cin>>command;
if(command=="exit"||cin.eof()){
cout<<"exit!"<<endl;
system("exit");
break;
}
system(command.c_str());
}while (true);

但是当我调用 cd 命令(更改当前目录)时出现“权限被拒绝”错误。

我可以在我的代码中使用 chmod 吗?如果是,我该如何使用它。

编译后我无法使用 chmod

这是我编译代码的方式:

g++ -o shell *.cpp -std=c++11 -Wall -Wno-vla -pedantic -march=core2 -Os -pipe -fstack-protector-all -g3 -Wl,-O,1,-z,combreloc

最佳答案

system() 函数启动一个新的 shell。如果你在那个 shell 中 cd 你只会影响那个 shell,一旦对 system() 的调用返回,它就会消失,所以基本上没有任何影响。你可能永远不应该在 C++ 程序中使用 system() - 如果你想改变你执行代码的工作目录,你应该使用 chdir() 函数,它是POSIX 但我相信在 Windows 上也可用..

关于c++ - 使用 C++ 的 Unix 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49518662/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com