gpt4 book ai didi

c - 使用 strtok() 并在后台执行 UNIX 命令

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:07 24 4
gpt4 key购买 nike

<分区>

我正在尝试编写一个创建 UNIX shell 的 C 程序。在此 shell 中,当键入 UNIX 命令时,shell 应在前台或后台(指定 & 时在后台)执行它。我正在获取在前台运行的命令,但我无法在后台运行它。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>

#define MAX_LENGTH 1024
#define DELIMS " \t\r\n"

int main(int argc, char *argv[])
{
char *cmd, *bg;
char line[MAX_LENGTH];
pid_t fpid,bpid;
int status;
while (1)
{
fpid=10;
bpid=10;
printf("myshell > ");
if (!fgets(line, MAX_LENGTH, stdin))
break;
int j=0;

if(cmd = strtok(line, DELIMS))
{

bg = strtok(line," ");
while(bg!=NULL)
{
printf("%s",bg);
bg = strtok(NULL, " ");
if(strcmp(bg, "&") == 0)
break;
}

printf("%s", bg);
if(strcmp(cmd,"exit")==0)
break;

else if(strcmp(bg,"&")==0)
{
bpid=fork();
//waitpid(bpid,&status,0);
system(line);
exit(0);
}
else
{
//fpid=fork();
//if(fpid==0)
//{
system(line);
// exit(0);
//}
//else
//{
// waitpid(fpid,&status,0);
//}
}
}
}

return(0);
}

这段代码是我的作业。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com