gpt4 book ai didi

bash - "sh -c"不接受额外参数的问题,UNIX,使用 execve()

转载 作者:行者123 更新时间:2023-12-04 06:05:50 25 4
gpt4 key购买 nike

关闭。这个问题是off-topic .它目前不接受答案。












想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。

8年前关闭。




Improve this question




我试图找出如何使用 sh -cbash -c适本地。

我可以轻松地运行一个简单的命令,如 "sh -c ls"没有论据。

当我尝试添加参数时,问题就出现了。
待办ls -ltga ,我不得不这样做:

sh -c "ls -ltga"

这不会是一个大问题,除非我正在尝试编写自己的小 shell 程序,
当我使用 execve我尝试:
Argument #:  string
0: sh
1: -c
2: "ls
3: -ltga"

它给了我一个错误,说它在找到下一个 '"' 之前达到了 EOF。

我也试过:
         0:  sh
1: -c
2: "ls -ltga"

它返回给我说它找不到名为 "ls -ltga" 的文件/脚本

有谁知道我做错了什么?

最佳答案

你不应该在 execve() 的参数中加上引号.应该这样称呼:

char *args = { "sh", "-c", "ls -ltga", 0};
execve("/bin/sh", args);
execve() 的第一个参数必须是可执行文件的路径(通常是完整路径)。

关于bash - "sh -c"不接受额外参数的问题,UNIX,使用 execve(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8372691/

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