|
楼主 |
发表于 2004-4-10 19:05:23
|
显示全部楼层
这么说来就是不能调用自己编写的c程序了。其实我是想利用apue中的命令处理函数(课本的只是处理系统本身的shell命令且不能带参数),对我的从键盘输入命令(带参数的)来执行我的功能函数的。整个程序就是一个简单的shell程序。我想知道怎样来通过对输入命令的分析来调用功能函数。希望大家能给点意见,源程序如下:
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
#include "ourhdr.h"
static void sig_int(int); /* our signal-catching function */
int
main(void)
{
char buf[MAXLINE];
pid_t pid;
int status;
if (signal(SIGINT, sig_int) == SIG_ERR)
err_sys("signal error");
printf("%% "); /* print prompt (printf requires %% to print %) */
while (fgets(buf, MAXLINE, stdin) != NULL) {
buf[strlen(buf) - 1] = 0; /* replace newline with null */
if ( (pid = fork()) < 0)
err_sys("fork error");
else if (pid == 0) { /* child */
execlp(buf, buf, (char *) 0);
err_ret("couldn't execute: %s", buf);
exit(127);
}
/* parent */
if ( (pid = waitpid(pid, &status, 0)) < 0)
err_sys("waitpid error");
printf("%% ");
}
exit(0);
}
void
sig_int(int signo)
{
printf("interrupt\n%% ");
} |
|