【发布时间】:2020-06-16 18:42:37
【问题描述】:
我正在运行一个程序,给定点执行system 调用以压缩一些文件。
第一次正常运行,但下一次(以及下一次)失败并显示 -1 错误代码。
sprintf(zip, "zip -q -T -m -r %s/datsiter%d.zip %s/*%d.dat", dir, it_number, dir, it_number);
ierr = system(zip);
printf("Output:%s %d\n ",zip, ierr);
输出是:
Output:zip -q -T -m -r results/datsiter0.zip results/*0.dat 0
Output:zip -q -T -m -r results/datsiter1.zip results/*1.dat -1
Output:zip -q -T -m -r results/datsiter2.zip results/*2.dat -1
如果运行后我手动执行命令,它会按预期工作。
编辑
根据 kaylum 的建议,我在 system 通话后添加了 perror("Error: "); 并获得了密钥。一个不错的Cannot allocate memory,我必须仔细检查,因为我在使用队列系统的集群中工作。
【问题讨论】:
-
致电
perror看看是否有更具体的错误可用。 -
你不妨试试看
zip的stdout输出是什么,比如这里stackoverflow.com/questions/646241/… -
Nitpick:
system()不是系统调用,虽然它会在内部调用多个系统调用,其中没有一个称为“系统”。 -
你在什么系统上运行?视窗? linux?
标签: c command system-calls