关于system调用错误!!!

xhd3767 2009-10-31 01:50:20
#include <stdio.h>
void amendHeadOfConfig(int number)
{
char commandStr[20];
sprintf(commandStr,"sed \'1 c %d\' 1.txt > temp.txt",number);
printf("commandStr: %s\n",commandStr);
system(commandStr);
system("rm -f 1.txt");
system("mv temp.txt 1.txt");

}

int main()
{
amendHeadOfConfig(5);
}


调用后出现segmetion fault .

刚进入linux行业。请赐教!
估计是fork(),然后执行execl,,没有结束掉子进程...
但是想请假这个问题该怎么解决!!!....
期待中 ....
...全文
135 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongjiawei316 2009-11-04
  • 打赏
  • 举报
回复
呵呵,我也看出来了,commandStr太小
XyRbj 2009-11-02
  • 打赏
  • 举报
回复
commandStr 这个定义放宽点。你看看你复制的字符串都已经占了多少字节了strlen一下 "sed \'1 c %d\' 1.txt > temp.txt" 你看看。
segmetion fault 应该值得就是这里的问题。
yueyinggufan 2009-11-01
  • 打赏
  • 举报
回复
同意LS观点, commandStr太小了, 数据写出了commandStr区域,将amendHeadOfConfig函数栈的数据覆盖调了,导致amendHeadOfConfig找不到return位置,所以在amendHeadOfConfig返回的时候报错了
CheryStrive 2009-11-01
  • 打赏
  • 举报
回复
JF
  • 打赏
  • 举报
回复
。。接分
wxdcxp 2009-10-31
  • 打赏
  • 举报
回复
有初始化吗
fantasy614 2009-10-31
  • 打赏
  • 举报
回复
这个错误其实lz在仔细找找就能发现的,所以除出了问题还是先自己思考一下比较好。
yhf365 2009-10-31
  • 打赏
  • 举报
回复
呵呵,255也多占用不了多少空间的
xhd3767 2009-10-31
  • 打赏
  • 举报
回复
这是散分贴..
buffer开小了...

23,107

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧