在过去几天里,我一直在试图写一下我自己的炮弹,但我似乎 st忙地把管道带上来,以便妥善工作。 我能够把管道(ex: ls ́ ́)分开,从管道(ex: ls ́ >)上 for,但似乎可以让管道从管道中投入。
我认为,我根本不理解如何妥善使用管道和管道。
我现在包括我仍在失败的法典: Souck...
void forkAndExecute( char* arrayOfWords[] , vector<pid_t> *vectorOfPIDs , bool hasNextCmd , bool hasPrevCmd) {
int fd[ 2 ];
pid_t pid;
if( hasNextCmd ){
pipe(fd);
iii
pid = fork();
//error if PID < 0
if( pid < 0 ) {
cerr << ">>> fork failed >>>" << endl;
exit(-1);
iii
//child process if PID == 0
else if( pid == 0 ) {
if ( hasPrevCmd ){
dup2(fd[0] , 0);
close(fd[0]);
close(fd[1]);
iii
if ( hasNextCmd ){
dup2(fd[1],1);
close(fd[0]);
close(fd[1]);
iii
execvp( arrayOfWords[0] , arrayOfWords );
cout << ">>> command not found >>>" << endl;
//if logic reaches here, exec failed
exit(0);
iii
//parent process
else{
close(fd[0]);
close(fd[1]);
//if( ! isLastCmd ){
//iii
vectorOfPIDs->push_back(pid);
iii
iii