Kod:
#include
#include
int main(int argc,char** argv)
{
char deneme[100],ags[100][100],*args[100],*env={NULL},asd[100]="/bin/";
int j,i,a=0,b=0,pid,ret,status,childpid,x;
while(1){
for(i=0;i<=100;i++)
{
args[i]=NULL;
for(j=0;j<=100;j++)
{
ags[i][j]=NULL;
}
}
printf("sevgili shell 1.0 : ");
gets(deneme);
for(i=0;i{
if(deneme[i]!=" ")
{
ags[a][b]=deneme[i];
// printf("ags[%d]:%s\n",a,ags[a]);
b++;
}
else
{
a++;
b=0;
}
}
// printf("farki\n");
for(i=0;i<=a;i++)
{
// printf("ags[%d]:%s\n",i,ags[i]);
args[i]=ags[i];
// printf("args[%d]:%s\n",i,args[i]);
}
a++;
args[a]=NULL;
// printf("args[%d]:%s\n",a,args[a]);
strcpy(asd,"/bin/");
strcat(asd,ags[0]);
// printf("asd:%s\n",asd);
args[0]=asd;
// printf("args[0]:%s\n",args[0]);
a=0;
b=0;
pid=fork();
if(pid==0)
{
printf("\n\n\n");
ret=execve(args[0],args,env);
if(ret<0)
{
printf("--wrong command:%s\n",args[0]);
// printf("exitting program\n");
exit(1);
}
}
else
{
printf( "--- PARENT waiting for the child to finish executing command ...\n\n" );
childpid = waitpid( -1, &status, 0 /* null */ );
printf( "\n--- PARENT will exit now that the CHILD is done, child PID=%d\n\n",
childpid );
usleep( 2000000 );
}
}
}