管道命令上的Strtok_r没有给出输出

时间:2016-09-27 17:29:26

标签: c shell

我在C中编写自定义shell。我想包含管道功能,所以我想根据管道符号进行标记。

我似乎在这里犯了一个错误,因为当我尝试打印令牌时没有输出。

#include<stdio.h>
#include<sys/resource.h>
#include<stdlib.h>
#include<errno.h>
#include<sys/utsname.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<pwd.h>
#include<sys/wait.h>
#include<signal.h>
#include<sys/stat.h>
#include<fcntl.h>

#define MAX_NO_OF_CMD_ELEMENTS (10)
#define MAX_NO_OF_PIPE_ELEMENTS (10)

void main(int argc, char**argv)
{
    int i;
    printf("in piping\n");
    int pipe_num[100] = {0};
    char * pipe_cmd[MAX_NO_OF_PIPE_ELEMENTS];
    char *token, *end_str;
    for(i=0;i<argc;i++)
    {   
        pipe_num[i]++;
        token = strtok_r(argv[i], "|", &end_str);
        pipe_cmd[pipe_num[i]] = token;
        while(token!=NULL)
        {
            pipe_num[i]++;
            token = strtok_r(NULL,"|",&end_str);
            pipe_cmd[pipe_num[i]] = strdup(token);
            printf("%s %s\n",pipe_cmd[pipe_num[i]],token);
        }
    }   
}

0 个答案:

没有答案