所以我试着执行一个用户给出的程序,比如uns系统上的ls。并将所有这些保存到字符串中,以便将其存储在地图中。
我需要调用的程序是Variables [key](这是map),这是用户提交的命令,之后我想用它创建的字符串保存它。这是我试图适应它的代码,最初是重定向到文件,但是在尝试将其与字符串流一起使用时遇到了问题。在此先感谢任何帮助< 3
string key = argv[1];
int fds[2];
int count;
int fd;
char c;
pid_t pid;
pipe(fds);
if (fork() == 0)
{
dup2(fds[0], 0);
close(fds[1]);
stringstream ss;
while ((count = read(0, &c, 1)) > 0)
{
ss << &c;
}
string temp;
ss >> temp;
cout << temp << endl;
execlp("echo", "echo", NULL);
}
else if ((pid = fork()) == 0)
{
dup2(fds[1], 1);
close(fds[0]);
cout << argv[1] << argv << endl;
execvp(argv[1], argv);
perror("execvp failed");
}
else
{
waitpid(pid, NULL, 0);
close(fds[0]);
close(fds[1]);
}
答案 0 :(得分:0)
而不是:
ss << &c;
使用此:
ss << c;
您要做的是在流中写入char*
,假定它是一个以空字符结尾的字符串。但是,它只是一个char而不是一个以null结尾的字符串,所以你所做的是未定义的行为。相反,您应该将该字符写入流中。