int piping(char *cmd,int pipeCount){ int processCount = pipeCount+1; char *process[processCount]; for(int i=0;i<processCount;i++){ process[i] = (char *)malloc(sizeof(char) * MAXPIPECOMMANDSIZE); } int dummy; lineToWords(cmd,process,&dummy,'|'); for(int i=0;i<processCount;i++){ // printf("\nPROCESS[%d] = {%s}",i,process[i]); } printf("\n"); for(int i=0;i<processCount;i++){ if(process[i][0] == '\0'){ printf("\nERROR in %d th command !!",i+1); return -1; } } /************** main piping code *******************/ runPipe(process,processCount); /***************************************************/ for(int i=0;i<processCount;i++){ free(process[i]); } printf("\n"); return 0; }
int main(int argc,char **argv){ FILE *debug = fopen("debug.txt","w"); fclose(debug); int pCount = argc-1; // printf("\npCount = %d",pCount); char *cmd[pCount]; for(int i=0;i<pCount;i++){ cmd[i] = (char *)malloc(sizeof(char)*100); strcpy(cmd[i],argv[i+1]); printf("\nCMD[%d] = {%s}",i,cmd[i]); } runPipe(cmd,pCount); printf("\nIN MAIN\n"); return 0; }
////=========================================================================================== int main() { /* installation du handler pour le signal child_signal */ struct sigaction sig; sig.sa_flags = 0; sig.sa_handler = child_signal; sigemptyset(&sig.sa_mask); sigaction(child_signal,&sig,NULL); /* désactivation l'interruption par Contrôle+C */ sig.sa_handler = SIG_IGN; sigaction(SIGINT, &sig, NULL); initialize_readline (); using_history (); printf("Lecture de fichier d'histoire : (%s)\n",strerror(read_history (history_filename))); while (!Exit) { init(); prompt(); next=0; lire(); decoupe_ligne_seq(); int i=0; for (;i<numcmd_seq;i++) { char *line; char* elem[MAXELEMS]; //strcpy(&line,cmds_seq[i]); decoupe_ligne_pipe(cmds_seq[i]); if (piped) { runPipe(); } else { decoupe_cmd(cmds_seq[i],elem); if (redirected) { runRedirectedCommand(elem,red_file,red_type); } else { execute(elem); } } } } printf("Sauvegarde de fichier d'histoire : (%s)\n",strerror(write_history(history_filename))); return 0; }