尝试编写一个shell( fork exec wait)

平台:CentOS 5.5   内核 2.6.13

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <wait.h>
#include <string.h>

int main() {
	char comm[20];
	pid_t pid;
	int ret;
	while (1) {
		printf("root@bogon:");
		scanf("%s", comm);
		if (strcmp(comm, "exit") == 0)
			break;
		else {
			pid = fork();
			if (pid == -1) {
				perror("fork");
				exit(0);
			} else if (pid == 0) {
				ret = execlp(comm, comm, NULL);
				if (ret == -1) {
					exit(1);
				}
			} else {
				wait(NULL);
			}
		}

	}
	return 0;
}



运行效果:

[root@bogon Debug]# ./text 
root@bogon:ls
makefile  objects.mk  passwd  passwd~  sources.mk  src  text
root@bogon:who
root     :0           2012-08-04 09:22
root     pts/2        2012-08-05 17:45 (:0.0)
root@bogon:pwd
/root/workspace/text/Debug
root@bogon:exit
[root@bogon Debug]# 



你可能感兴趣的:(shell,centos,null,平台)