C++ 非法指令:4
我正在写一个c代码来执行终端的“history 10”命令,我在我的mac终端上使用clang编译器运行程序,它显示错误“非法指令:4” 我的代码是-C++ 非法指令:4,c++,c,macos,terminal,C++,C,Macos,Terminal,我正在写一个c代码来执行终端的“history 10”命令,我在我的mac终端上使用clang编译器运行程序,它显示错误“非法指令:4” 我的代码是- #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include<errno.h> #include<sys/wait.h> #include <unistd.h> #include<str
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include<errno.h>
#include<sys/wait.h>
#include <unistd.h>
#include<string.h>
int main()
{ char cmd[10];
strcpy(cmd,"history 10");
system(cmd);
return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
int main()
{char cmd[10];
strcpy(cmd,“历史记录10”);
系统(cmd);
返回0;
}
您的缓冲区溢出:cmd
数组只有10个字符,而您strcpy
数组中有一个11个字符的字符串(该字符串末尾有一个隐式的第11个零字节,它是字符串的终止符)
去掉缓冲区,然后就这样做
system("history 10");
或者声明缓冲区的长度足以容纳当前命令,也可能是将来的命令。大概是这样的:
char cmd[500];
您需要
charcmd[11]代码>否则,不会存储NUL字符('\0'
)。逐个错误。(不要忽略缓冲区大小…)让编译器来完成工作:charcmd[]=“history 10”代码>请不要同时使用标记和。这些是不同的语言,您的代码仅为C语言,您确定需要包含所有这些*.h
文件吗?