#include <stdio.h>
#include<stdlib.h>
#include <string.h> /*strtok strcpy*/
#include<malloc.h> /*malloc*/
#include <sys/types.h> /* pid_t */
#include <sys/wait.h> /* waitpid */
#include <unistd.h> /* _exit, fork */
int main( )
{
int i= 0 ;
char * cuvinte[ 256 ] ; // words
char comanda[ 256 ] ; //command
printf ( "Introduceti comanda: " ) ; //enter the command fgets ( comanda
, sizeof ( comanda
) , stdin
) ; // read the command char * c
= strtok ( comanda
, " " ) ; // split it into tokens
while ( c!= 0 )
{
cuvinte
[ i
] = malloc ( strlen ( c
) + 1 ) ; // alocate memory for the array strcpy ( cuvinte
[ i
++ ] , c
) ; //copying tokens into array printf ( "%s\n " , c
) ; // printing them }
printf ( "Sunt %d elemente stocate in array! \n \n " , i
) ; //no of tokens stored printf ( "Primul cuvant este: %s \n \n \n " , cuvinte
[ 0 ] ) ; //should print the first word
/*i got stucked here because of the tokens */
/*face un proces copil*/
pid_t pid= fork( ) ;
if ( pid== 0 ) { /* procesul copil*/
static char * argv[ ] = { "/bin/uname" , "-a" , NULL} ;
execv( argv[ 0 ] , argv) ;
exit ( 127 ) ; /*in caz ca execv da fail*/ }
else { /* pid!=0; proces parinte */
waitpid( pid, 0 , 0 ) ; /* asteapta dupa copil */
}
//getch();
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+ICAgLypzdHJ0b2sgc3RyY3B5Ki8KI2luY2x1ZGU8bWFsbG9jLmg+ICAgLyptYWxsb2MqLwojaW5jbHVkZSA8c3lzL3R5cGVzLmg+IC8qIHBpZF90ICovCiNpbmNsdWRlIDxzeXMvd2FpdC5oPiAgLyogd2FpdHBpZCAqLwojaW5jbHVkZSA8dW5pc3RkLmg+ICAgIC8qIF9leGl0LCBmb3JrICovCgppbnQgbWFpbigpCnsKICAgIGludCBpPTA7CiAgICBjaGFyICpjdXZpbnRlWzI1Nl07IC8vIHdvcmRzCiAgICBjaGFyIGNvbWFuZGFbMjU2XTsgIC8vY29tbWFuZAoKICAgIHByaW50ZigiSW50cm9kdWNldGkgY29tYW5kYTogIik7IC8vZW50ZXIgdGhlIGNvbW1hbmQKICAgIGZnZXRzKGNvbWFuZGEsc2l6ZW9mKGNvbWFuZGEpLHN0ZGluKTsgLy8gcmVhZCB0aGUgY29tbWFuZAogICAgY2hhciAqYyA9IHN0cnRvayhjb21hbmRhLCIgIik7IC8vIHNwbGl0IGl0IGludG8gdG9rZW5zCgogICAgd2hpbGUoYyE9MCkKICAgIHsKICAgICAgICBjdXZpbnRlW2ldID0gbWFsbG9jKCBzdHJsZW4oIGMgKSArIDEgKTsgLy8gYWxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBhcnJheQogICAgICAgIHN0cmNweShjdXZpbnRlW2krK10sYyk7IC8vY29weWluZyB0b2tlbnMgaW50byBhcnJheQogICAgICAgIHByaW50ZigiJXNcbiIsYyk7IC8vIHByaW50aW5nIHRoZW0KICAgICAgICBjPXN0cnRvayhOVUxMLCAiICwuIT8iKTsKICAgICAgICB9CiAgICBwcmludGYoIlN1bnQgJWQgZWxlbWVudGUgc3RvY2F0ZSBpbiBhcnJheSEgXG5cbiIsaSk7IC8vbm8gb2YgdG9rZW5zIHN0b3JlZAogICAgcHJpbnRmKCJQcmltdWwgY3V2YW50IGVzdGU6ICVzIFxuXG5cbiIsY3V2aW50ZVswXSk7IC8vc2hvdWxkIHByaW50IHRoZSBmaXJzdCB3b3JkCgoKICAgIC8qaSBnb3Qgc3R1Y2tlZCBoZXJlIGJlY2F1c2Ugb2YgdGhlIHRva2VucyAqLwoKLypmYWNlIHVuIHByb2NlcyBjb3BpbCovCiAgICAgIHBpZF90IHBpZD1mb3JrKCk7CiAgICAgICAgaWYgKHBpZD09MCkgeyAvKiBwcm9jZXN1bCBjb3BpbCovCiAgICAgICAgc3RhdGljIGNoYXIgKmFyZ3ZbXT17Ii9iaW4vdW5hbWUiLCItYSIsTlVMTH07CiAgICAgICAgZXhlY3YoYXJndlswXSxhcmd2KTsKICAgICAgICBleGl0KDEyNyk7IC8qaW4gY2F6IGNhIGV4ZWN2IGRhIGZhaWwqLwogICAgICAgIH0KICAgICAgICBlbHNlIHsgLyogcGlkIT0wOyBwcm9jZXMgcGFyaW50ZSAqLwogICAgICAgIHdhaXRwaWQocGlkLDAsMCk7IC8qIGFzdGVhcHRhIGR1cGEgY29waWwgKi8KICAgICAgICB9CiAgICAvL2dldGNoKCk7CiAgICByZXR1cm4gMDsKfQo=