如何使用c++中的execl系统调用通过cat命令创建文本文件?
我试着用
execl("/bin/cat", "cat", ">", "test.txt", NULL);但是它给了我输入输出错误
发布于 2020-10-23 23:53:18
问题是>的重定向是由调用cat的shell处理的,而不是由cat本身处理的。最简单的解决方案是调用sh,让它调用cat并处理重定向:
execl("/bin/sh", "sh", "-c", "/bin/cat > test.txt", (char *) NULL);另一种方法是自己打开文件(使用open),关闭标准输出,将文件描述符复制到fd 1上(通过调用dup2),最后关闭第一个文件描述符。然后,您可以调用execl,让cat写入标准输出。这基本上就是shell所做的事情,但是让sh为您做这件事要容易得多。
https://stackoverflow.com/questions/64503148
复制相似问题