0
シンプルなシェルの始まりを書いていますが、これまでのところ 'ls'はうまくいきます。私は、このコードをフォークして実行するために書いています。私は私のリダイレクトを使用しようとすると、私はエラー「『>』にアクセスできません取得していますしかし 、:そのようなファイルやディレクトリを は、私はこれらの演算子は、次のような読み作るにはどうすればよい自分のシンプルなシェルの配管とリダイレクト
int startProcess (StringArray sa)
{
int pid;
int status;
int fd1;
int fd2;
int current_in;
int current_out;
switch(pid = fork()){
case -1://This is an error
perror("Failure of child.");
return 1;
case 0: // This is the child
execvp(sa[0], sa);
for (int i = 0; i < strlen(sa); i++){
if (sa[i] == '|'){
}
if (sa[i] == '>'){
fd1 = creat(sa[i-1], 0644);
dup2(fd1, STDOUT_FILENO);
close(fd1);
}
if(sa[i] == '<'){
fd2 = open(sa[i-1], O_RDONLY, 0);
dup2(fd2, STDIN_FILENO);
close(fd2);
}
}
perror(sa[0]);
printf("Could not execute '%s'\n", sa[0]);
exit(1);
default:// This is the parent
wait(&status);
return (status == 0) ? 0: 1;
}
}
は 'のSA [1 I]を置き換え+ 1] ' –
E h ...リダイレクトを設定する前に、なぜあなたはexec **をしていますか? –
また、saでstrlenを呼び出すと、saは実際には 'char *' ...という意味になります。 –