当前位置: 技术问答>linux和unix
关于system调用错误!!!
来源: 互联网 发布时间:2016-07-12
本文导语: #include void amendHeadOfConfig(int number) { char commandStr[20]; sprintf(commandStr,"sed '1 c %d' 1.txt > temp.txt",number); printf("commandStr: %sn",commandStr); system(commandStr); system("rm -f 1.txt"); system("mv tem...
#include
void amendHeadOfConfig(int number)
{
char commandStr[20];
sprintf(commandStr,"sed '1 c %d' 1.txt > temp.txt",number);
printf("commandStr: %sn",commandStr);
system(commandStr);
system("rm -f 1.txt");
system("mv temp.txt 1.txt");
}
int main()
{
amendHeadOfConfig(5);
}
调用后出现segmetion fault .
刚进入linux行业。请赐教!
估计是fork(),然后执行execl,,没有结束掉子进程...
但是想请假这个问题该怎么解决!!!....
期待中 ....
void amendHeadOfConfig(int number)
{
char commandStr[20];
sprintf(commandStr,"sed '1 c %d' 1.txt > temp.txt",number);
printf("commandStr: %sn",commandStr);
system(commandStr);
system("rm -f 1.txt");
system("mv temp.txt 1.txt");
}
int main()
{
amendHeadOfConfig(5);
}
调用后出现segmetion fault .
刚进入linux行业。请赐教!
估计是fork(),然后执行execl,,没有结束掉子进程...
但是想请假这个问题该怎么解决!!!....
期待中 ....
|
呵呵,255也多占用不了多少空间的
|
有初始化吗
|
这个错误其实lz在仔细找找就能发现的,所以除出了问题还是先自己思考一下比较好。
|
。。接分
|
JF
|
同意LS观点, commandStr太小了, 数据写出了commandStr区域,将amendHeadOfConfig函数栈的数据覆盖调了,导致amendHeadOfConfig找不到return位置,所以在amendHeadOfConfig返回的时候报错了
|
commandStr 这个定义放宽点。你看看你复制的字符串都已经占了多少字节了strlen一下 "sed '1 c %d' 1.txt > temp.txt" 你看看。
segmetion fault 应该值得就是这里的问题。
segmetion fault 应该值得就是这里的问题。
|
呵呵,我也看出来了,commandStr太小