gpt4 book ai didi

c - Linux,C 将 cat 与 exec(3) 结合使用

转载 作者:太空狗 更新时间:2023-10-29 11:32:18 25 4
gpt4 key购买 nike

我正在做这个在调用程序时读取用户参数的小程序。像 ls、rm 等简单的调用很容易做到,但我不知道该怎么做:

cat 文件 1 >> 文件 2我想要做的是将一个文件的内容添加到另一个文件,而不是替换内容。

所以如果我做类似的事情:./programName 添加文件1 文件2

if(strcmp(argv[1], "add")==0){
char *parmList[] ={ "cat", argv[2], ">>", argv[3], NULL};
execv("/bin/cat", parmList);
exit(EXIT_SUCCESS);
}

返回的是控制台打印的两个文件和

cat: >>: No such file or directory

我做错了什么?如果没有猫,还有其他方法吗?ps: 必须和exec(3)一起使用。

编辑:对于任何感兴趣的人,回复帮助我找到了一种方法,尽管我不确定是否有更好的方法。我所做的是转换

"cat", argv[2], ">>", argv[3]

变成一个字符串,然后按照建议使用/bin/sh -c。

这是代码

char parmList[180];
strcpy (parmList,"cat ");
strcat (parmList,argv[2]);
strcat (parmList," >> ");
strcat (parmList,argv[3]);
char *args[] = { "/bin/sh", "-c", parmList, NULL };
execve("/bin/sh", args, NULL);

最佳答案

>>> 是一个 shell 操作符。您还没有调用 shell。如果您想使用 shell 运算符,则必须这样做。试试 /bin/sh -c

关于c - Linux,C 将 cat 与 exec(3) 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27570464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com