単純なシェルを実装しようとしています。私はこのようにプロセスをフォークします:
void forkProcess(char* cmd[]) {
pid_t pid;
char programPath[BUFFERLENGTH] = "/bin/";
strcat(programPath, cmd[0]);
int exitStatus;
pid = fork();
switch (pid) {
case -1:
printf("Fork failed; pid == -1\n");
break;
case 0:
execv(programPath, cmd);
exit(0);
break;
default:
waitpid(pid, &exitStatus, 0);
//printf("Exitstatus = %d\n", WEXITSTATUS(exitStatus));
break;
}
}
これで、cmd
パラメータにパイプが含まれる可能性があります。例:
"ls" "-l" "|" "grep" "whatever" "(char*)NULL";
では、どうすればパイプ機能を実装できますか?pipe()
やのような関数があることはdup()
知っていますが、このコンテキストでそれらを使用する方法がわかりません。
提案ありがとうございます。