Linuxシェルのように動作するプログラムを書きたいのですが。「ls」コマンドを実行する小さなプログラムを書くことから始めました。私が理解できないことは、シェルが行うように、プログラムがコマンドに応答するようにするにはどうすればよいかです。(例:cat、cd、dir)。
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#define MAX 32
using namespace std;
int main() {
pid_t c;
char s[MAX];
int fd[2];
int n;
pipe(fd);
c = fork();
if(c == 0) {
close(fd[0]);
dup2(fd[1], 1);
execlp("ls", "ls", "-l", NULL);
return 0;
} else {
close(fd[1]);
while( (n = read(fd[0], s, MAX-1)) > 0 ) {
s[n] = '\0';
cout<<s;
}
close(fd[0]);
return 0;
}
return 0;
}
ユーザーが入力したものをプログラムに読み取らせ、それを渡すにはどうすればよいですかexeclp
(または同じことを行う類似のプログラム)。
シェルは基本的に次のことを行います。
最初に非常に単純なシェルを作成します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加