コード例 #1
0
ファイル: myshell.c プロジェクト: MohamadKin/OS
int main() {
	int i;
	int argc = 0;
	int old_pipe[] = {0,1};
	char **args; 
	while(1) {
		printf("$ ");
		args = getln(&argc);
		if(argc > 0){
			if(args != NULL && strcmp(args[0],"") && args[0] != NULL ){
				for(i = 0; i < strlen(args[0]); i++){
				  args[0][i] = tolower(args[0][i]);
				}
				if(strcmp(args[0],"exit") == 0 || strcmp(args[0],"quit") == 0 ){
					printf("exiting program\n");
					exit(0);
				}else if(strcmp(args[0],"arg") == 0){
					arg(args,argc);
				}else if(strcmp(args[0],"add") == 0){
					add(args);
				}else if(strcmp(args[0],"mult") == 0){
					mult(args);
				}else{
					for(i = 0; args[i] != NULL; i++) {
						if(strcmp(args[i],"|") == 0){
							args[i][0]=' ';
							creat_pipe(arg_array(args,argc,i+1),arg_array(args,i+1,0),argc-i,i+1, old_pipe);
							i = 0;
							break;
						}else if(strcmp(args[i],"&") == 0){
							args[i][0]=' ';
							i = -1;
							break; 
						}
					}
					if(i == -1){
						make_child(args,1,argc);
					}else if(i != 0){
						make_child(args,0, argc);
					}				
				}
			}
		}
	}
	return 0;
}
コード例 #2
0
ファイル: pipe_menu.c プロジェクト: jbmulligan/quip
static COMMAND_FUNC( do_newpipe )
{
	const char *pipe_name;
	const char *cmd;
	const char *mode;
	int n;

	pipe_name=NAMEOF("name for pipe");

	n=WHICH_ONE("read/write",N_RW_CHOICES,rw_choices);

	cmd=NAMEOF("command");

	if( n < 0 || n >= 2 ) return;
	if( n == 0 ) mode="r";
	else mode="w";
	
	creat_pipe(QSP_ARG  pipe_name,cmd,mode);
}