예제 #1
0
static int __init module_sender_init(void)
{
	printk(KERN_ALERT "Sender module loaded...\n");

	if (pid) {
		printProcessInfo(pid);
	}

	return 0;
}
예제 #2
0
int main(int argc, char **argv)
{
	time_t startTime,endTime;
	pid_t forkPid;
	startTime = time(NULL);
	printf("Start time: %d\n", startTime);
	forkPid = fork();//gets pid to determine if child or parent
	if(forkPid<0) {
		printf("fork error");
		return -1;
	} else if(forkPid ==0) {
		int i;
		for(i=0;i<99999999;i++){
		
		}
		printProcessInfo(forkPid);
	} else {
		printProcessInfo(forkPid);
		endTime=time(NULL);
		printf("End time: %d\n", endTime);
	}
	return 1;
}
예제 #3
0
//processes command by forking, redirecting i/o in the child process,
//and using execvp in the child process 
int do_command(){
	
	printf("Executing command %s", my_argv[0]);
	if(my_argc > 1)
		printf(" with arguments");
	for(int i =1 ; i < my_argc; i++)
		printf(" \"%s\"", my_argv[i]);
	printf("\n");

	if(gettimeofday(&start, NULL) <0)
		perror("start gettimeofday");
	if((pid = fork()) == -1){
		perror("Fork ");
		exit(1);
	}
	
	//actions to be performed in child process
	if(pid == 0){
		int i;

		// I/O Redirection
		if(numrs != 0){
			for(i = 0; i!= numrs; ++i){
				
				switch(redirect_check(my_argv1[i])){
					case 1:
						chop_char(my_argv1[i], 1); 		// "<filename"
						redirect(my_argv1[i], 0, 0);
						break;
					case 2: 
						redirect(my_argv1[i +1], 0, 0); // "< filename"
						break;
					case 3:
						chop_char(my_argv1[i], 1);		// ">filename"
						redirect(my_argv1[i], 1, 1);
						break;
					case 4:								//"> filename"
						redirect(my_argv1[i+1], 1, 1);
                    	break;
					case 5:								//"2>filename"
						chop_char(my_argv1[i], 2);
                    	redirect(my_argv1[i], 2, 1);
                    	break;
					case 6:								//"2> filename"
						redirect(my_argv1[i+1], 2, 1);
                    	break;
					case 7:								//">>filename"
						chop_char(my_argv1[i], 2);
                    	redirect(my_argv1[i], 1, 2);
                    	break;
					case 8:								//">> filename"
						redirect(my_argv1[i+1], 1, 2);
                    	break;
					case 9:								//"2>>filename"
						chop_char(my_argv1[i], 3);
                    	redirect(my_argv1[i], 2, 2);
                    	break;
					case 10:							//"2>> filename"
						redirect(my_argv1[i+1], 2, 2);
                    	break;
				}
			}
		}
		
		execvp(my_argv[0], my_argv);
		perror("execvp");
		exit(1);
	}

	//actions to be performed in parent process
	if(pid != 0)
		printProcessInfo();
	return 0;

}