【发布时间】:2018-03-17 00:31:28
【问题描述】:
我正在尝试使用 C 创建一个 shell,该 shell 可以接受由分号 (;) 分隔的多个命令。目前我正在尝试使用 strtok 来分隔命令,但我认为我没有正确使用它。我将发布所有我能发布的信息,而不发布整个代码。 strtok 使用是否正确?
char *semi=";";
else
{
char *token=strtok(str,semi);
if(token != NULL)
{
token=strtok(NULL,semi);
if((childpid = fork()) == 0)
{
if ((execvp(args[0], args))<0)//prints error message when unknown command is used
{
printf("Error! Command not recognized.\n");
}
execvp(args[0],args);
free(args);//deallocate args
exit(0);
}
编辑:按照指示,我删除了最初发布的大部分代码,仅专注于 strtok 的使用。编译后的临时外壳将一次接受一个命令。我正在尝试使用“;”分开并同时运行两个命令。我正确使用 strtok 吗?如果没有,是否有替代方案?
【问题讨论】:
-
请发布一个完整的最小示例 - 可以编译的东西。
-
并删除所有死代码(cmets 中的代码)。只需向我们展示您当前的代码即可。
-
我需要共享整个代码才能正常运行。将整个内容发布出来以便您和其他人自己编译会更好吗?我希望只有 strtok 部分就足够了,但我可以发布更多。
-
把整件事都贴出来是不好的。取而代之的是,在代码周围放置一个小包装,以演示代码的工作原理以及您面临的任何问题。请参阅help center 中的minimal, complete, and verifiable example。
-
我对编码/SO 还是很陌生,从您与我共享的链接来看,它表明要使代码尽可能简单。我不太确定如何在分解时编译代码。仅编辑和突出显示 strtok 的使用会更容易吗?