繁体   English   中英

如何在execl系统调用中使用cat命令创建文本文件?

[英]how to use cat command in execl system call to create a text file?

如何使用 c 中的 execl 系统调用使用 cat 命令创建文本文件

我尝试使用

execl("/bin/cat", "cat", ">", "test.txt", NULL);

但它给了我输入输出错误

问题在于>重定向是由调用cat的外壳程序处理的,而不是由cat本身处理的。 最简单的解决方案是调用sh ,并让它调用cat并处理重定向:

execl("/bin/sh", "sh", "-c", "/bin/cat > test.txt", (char *) NULL);

另一种方法是自己打开文件(使用open ),关闭标准输出,将文件描述符复制到 fd 1 (通过调用dup2 ),最后关闭第一个文件描述符。 然后你可以调用execl ,让cat写入标准输出。 这基本上就是 shell 所做的,但是让sh为你做要容易得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM