前提・実現したいこと
system関数を使用してコマンドを読み出したいと思っています。
発生している問題・エラーメッセージ
ここで、cd ..と入力した後にlsと入力しても現在のディレクトリを移動して中身を見れるわけではありません。
shell
1cd .. 2ls
調べたところ(個人的見解ですが)、system関数は子シェルを呼び出してきて、処理終了後に消されてしまいます。
なので、上記のような動作を行いたい場合は、
shell
1cd .. && ls
とすれば上手くいきます。
ここまでは良いのですが、個人的興味として、処理終了後に子シェルの破棄を食い止める方法などはあるのでしょうか。
難しいのでしょうが、何か参照できる文献などがあれば嬉しいです。
どなたかご教授頂けると幸いです。
該当のソースコード
c++
1#include <iostream> 2#include <string.h> 3#include <stdlib.h> 4 5#include <errno.h> 6 7using namespace std; 8 9int main() 10{ 11 char cmd[1000]; 12 13 while(true){ 14 cin.getline(cmd, sizeof(cmd)); 15 16 int status = system(cmd); 17 18 if(status != 0){ cout<<"Couldn't implement."<<endl; break; } 19 } 20 21 cout<<"errno: "<<strerror(errno)<<endl; 22 23 24 25 return 0; 26}
試したこと
補足情報
