Buna ziua,<br><br>Sunt student in anul 1 (grupa 314CA) si m-am apucat sa studiez cursul de SO,<br>incluzand laboratoarele si temele. M-am apucat de programat tema 1 (mini-shell-ul),<br>dar la testele 03 si 09 intampin probleme (tests failed).<br>
<br>1) Am urmatoarea secventa de cod :<br><pre> word_t *q = malloc(sizeof(word_t)); <br> q = scmd->out;<br> if (q != NULL)<br> {<br> fd_out = open(q->string, O_CREAT | O_WRONLY, 0600);<br>
close(STDOUT_FILENO);<br> dup(fd_out);<br> }<br></pre>unde scmd este astfel : simple_command_t *scmd; .<br><br>Secventa de cod este dintr-o functie care proceseaza o comanda simpla (simple_command_t),<br>
si face ca output-ul sa se duca in fisierul specificat in comanda data shell-ului.<br><br>Acum, daca schimb O_CREAT | O_WRONLY cu O_CREAT | O_WRONLY | O_TRUNC,<br>testul 3 va trece, in schimb nu va mai trece testul 4 si testul 5.<br>
<br>Aveti vreo idee unde ar putea fi eroarea ?<br><br>2) La testul 9 iarasi am eroare, desi am cod de genul :<br><pre> if (scmd->params == NULL)<br> {<br> int tmp = execlp((scmd->verb)->string, (scmd->verb)->string, (char *) NULL);<br>
if (tmp == -1)<br> printf("Execution failed for '%s'\n", (scmd->verb)->string); <br> exit(tmp); }<br></pre>deci am mesajul de eroare care se cerea la testul 9.<br>
<br>Ma puteti ajuta, va rog si cu aceasta problema (unde ar putea fi bug-ul) ?<br><br>Va multumesc mult,<br>Alexandru.<br>