blow_tr
01/06/2007, 20:02
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
int main(int argc , char** argv) {
int done=0;
int childpid;
char *s1 = (char *)malloc(sizeof(char) * 100);
const char *full_path = (char *)malloc(sizeof(char) * 100);
char *line = (char *)malloc(sizeof(char) * 100);
char *cmd = (char *)malloc(sizeof(char) * 100);
char *token = (char *)malloc(sizeof(char) * 100);
char *my_argv = (char *)malloc(sizeof(char) * 100);
char *space = '\0';
signal(SIGINT, SIG_IGN);
//typedef void (*sighandler_t)(int);
setenv("PROMPT","20040407>",0);
while (!done) {
char* prompt=getenv( "PROMPT" );
if (prompt) {
printf( "%s", prompt );
}
else {
/*
printf( "***Hata : ENV ler daha önce tanımlanmadı...\n" );
*/
printf( "\n# " );
}
strcpy(s1, "/bin/");
scanf("%s",line);
strtok_r(line," ",&my_argv);
strcpy(cmd, line);
strncat(cmd, "\0", 1);
// printf("%s",strcat(s1, line));
full_path = strcat(s1, cmd);
childpid = fork();
if (childpid == 0) { /* Child */
/* execute edilmek üzere argumanlar hazırlanıyor*/
execvp( full_path, &token);
}
else { // parent process
wait(NULL);
}
} /* while sonu */
}//main sonu
Arkadaşlar merhaba benim linuxde Shell yazmam gerekiyor ama argumanları alamıyorum mesela "ls -al" yazdıgım zaman çalışması lazım.geldiğim en son nokta bu
ve programın CTRL+D de exit yapması gerekiyor
Acil Yardım ederseniz sevinirim
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
int main(int argc , char** argv) {
int done=0;
int childpid;
char *s1 = (char *)malloc(sizeof(char) * 100);
const char *full_path = (char *)malloc(sizeof(char) * 100);
char *line = (char *)malloc(sizeof(char) * 100);
char *cmd = (char *)malloc(sizeof(char) * 100);
char *token = (char *)malloc(sizeof(char) * 100);
char *my_argv = (char *)malloc(sizeof(char) * 100);
char *space = '\0';
signal(SIGINT, SIG_IGN);
//typedef void (*sighandler_t)(int);
setenv("PROMPT","20040407>",0);
while (!done) {
char* prompt=getenv( "PROMPT" );
if (prompt) {
printf( "%s", prompt );
}
else {
/*
printf( "***Hata : ENV ler daha önce tanımlanmadı...\n" );
*/
printf( "\n# " );
}
strcpy(s1, "/bin/");
scanf("%s",line);
strtok_r(line," ",&my_argv);
strcpy(cmd, line);
strncat(cmd, "\0", 1);
// printf("%s",strcat(s1, line));
full_path = strcat(s1, cmd);
childpid = fork();
if (childpid == 0) { /* Child */
/* execute edilmek üzere argumanlar hazırlanıyor*/
execvp( full_path, &token);
}
else { // parent process
wait(NULL);
}
} /* while sonu */
}//main sonu
Arkadaşlar merhaba benim linuxde Shell yazmam gerekiyor ama argumanları alamıyorum mesela "ls -al" yazdıgım zaman çalışması lazım.geldiğim en son nokta bu
ve programın CTRL+D de exit yapması gerekiyor
Acil Yardım ederseniz sevinirim