当前位置: 技术问答>linux和unix
我现在在编写一个在LINUX下运行的命令解释器,对于后台运行的命令方法有些不懂,请高手指点一下
来源: 互联网 发布时间:2015-04-12
本文导语: 我的任务是编一个在LINUX下运行的命令解释器,模拟LINUX中的SHELL 现在的困难是要求可以用&作为命令的结束符使之后台运做,请高手指点一下思路 当然,直接编好更好:) | #define MAX_CMD_SIZE 1024 s...
我的任务是编一个在LINUX下运行的命令解释器,模拟LINUX中的SHELL
现在的困难是要求可以用&作为命令的结束符使之后台运做,请高手指点一下思路
当然,直接编好更好:)
现在的困难是要求可以用&作为命令的结束符使之后台运做,请高手指点一下思路
当然,直接编好更好:)
|
#define MAX_CMD_SIZE 1024
static void sig_chld_handler(int signo)
{
int status;
int pid;
while((pid=wait(&status)) > 0){
printf("Child done, pid = %d, exit status = %d", pid, status);
};
return;
}
int main(int argc, char *argv[])
{
char cmdbuf[MAX_CMD_SIZE];
if(signal(SIGCHLD, sig_chld_handler) == SIG_ERR){
printf("signal handler errorn");
exit(EXIT_FAILURE);
}
while(1){
fputs(">");
fgets(cmdbuf, sizeof(cmdbuf), stdin);
if((pid = fork)
static void sig_chld_handler(int signo)
{
int status;
int pid;
while((pid=wait(&status)) > 0){
printf("Child done, pid = %d, exit status = %d", pid, status);
};
return;
}
int main(int argc, char *argv[])
{
char cmdbuf[MAX_CMD_SIZE];
if(signal(SIGCHLD, sig_chld_handler) == SIG_ERR){
printf("signal handler errorn");
exit(EXIT_FAILURE);
}
while(1){
fputs(">");
fgets(cmdbuf, sizeof(cmdbuf), stdin);
if((pid = fork)