我在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);
}
}
}