gpt4 book ai didi

c - 使用 C 在 Linux 上执行从键盘输入的命令时出现奇怪的错误

转载 作者:行者123 更新时间:2023-11-30 18:48:55 24 4
gpt4 key购买 nike

我正在 Linux 上学习代码 C。

我有一个程序来执行从键盘输入的命令行。

这是我的代码

char* command;
scanf("%s", command);
execl("/bin/sh", "sh", "-c", command, NULL);

它什么也没打印出来。

但奇怪的是:如果不再从键盘输入命令行并且我为变量分配值,那么它的工作方式如下:

char* command;
command = "ls -l";
execl("/bin/sh", "sh", "-c", command, NULL);

谁能告诉我为什么我的代码不能与 scanf() 一起使用

非常感谢!

最佳答案

char* command;
scanf("%s", command);

调用 scanf 时,内存未分配给命令,因此会导致未定义的行为,您应该通过以下任一方式分配内存

command = malloc(256);

或者将其声明为

char command[256];

关于c - 使用 C 在 Linux 上执行从键盘输入的命令时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44171417/

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